Android本の読書会から始めたことですが、仮想マシンでAndroid Studioを動かそうとしています。

 

目的は「Androidの開発環境でトラブることが多いので何度も最初から再インストールしたくない、同一PCに複数のバージョンの開発環境を入れてプロジェクトに応じて使い分けたい」の2つです。

まだ問題は残っていますが、現時点でできたことを記録しておきます。

 

ホストOSは64bitのWindows10 Homeです。最初はVirtualBoxを使って試してみました。

仮想マシンを作り、64bitのUbuntuサーバーをインストールし、Ubuntu MATE desktopを追加し、Android Studioを入れました。ゲストOSをLinuxにしたのはWindowsライセンスを追加購入したくなかったからです。

 

Android Studioは動き、プロジェクトが作成でき、実機のNexus7にアプリを焼くことはできましたが、AVDが動きません。

 

ネットで調べたところWindows版のHAXMに相当するKVMがないとだめとのこと。ここでネットの情報には「速いAVDを使いたいならばKVMが必要」という書き方と、単に「LinuxではKVMが必要」という2つのものがありました。そこで遅くても動けば良いと言うことでarmのAVDを作ったのですがやはり動きません。よって遅いAVDであってもLinuxでは必ずKVMが必要なのではないかと今のところ思っています。

 

そうすると前提として仮想マシンのVT-xが有効でなければならなくなりますが、VirtualBoxで作った仮想マシンはこれができない(nested virtualizationができない)、VMwareならできるという情報を見つけました。

 

そこでVMware Workstation 14 Playerで仮想マシンを作り、VT-xを有効にし、64bitのUbuntuサーバーをインストールし、KVMを有効にし、Ubuntu MATE desktopを追加し、Android Studioを入れました。実機のNexus7にアプリは焼けました。

 

それでもAVDは動かなかったのですがエラーメッセージが変わりました。そのエラーメッセージでネットの情報を探したところ、64bitのLinuxではAVDは一部32bitのライブラリを追加インストールしなければならないという情報を見つけました。つまりもう仮想化が原因ではなく64bitのLinuxならば出る問題ということです。

 

具体的にどのライブラリをインストールするのかが情報によって多少異なっているのは気になりますが一旦やってみました。一部のライブラリはエラーになって入りませんでしたがそういうこともあるとネット情報にありましたのでAVDを起動してみたのですがやはりエラー。

 

ネット情報のほとんどは32bitライブラリを追加する話でしたが、1つだけシェルからコマンド直打ちでAVDを起動せよ、その際起動時のオプションをつけよというのが見つかりました。それをやったところついにAVDが起動しました。Android Studioで作ったアプリをAVDで動作させることもできました。

 

ただしAVDを起動するとエラーメッセージがいくつか出る等まだ何かおかしいようです。AVDで動かしたアプリも簡単なものだけなので、もう少し複雑なものでも動くか今後確認してみるつもりです。

 

最後に64bitのLinuxだから面倒なことが起きているのなら32bitのUbuntuサーバーにしたらすっきりいくのかと思って試しましたが、こちらは他のライブラリが色々足りないらしくもっと面倒なことになってしまいました。Ubuntuの32bit版も提供が止まるようですしこちらでの追及はやめることにしました。

 

ということでまだおかしいところは残っていますが、一応仮想マシンでAndroid Studioを動かし、実機にもAVDにもアプリを焼くことはできました。進展があればまた書こうと思います。

 

「Androidを支える技術<I>」の読書会6回目を開催しました。


最初に前回やった仮想マシンでAndroid Studioを動かす件で、自分が試したところAVDも動かないしUSBで接続した実機も認識されなかったのですが、VirtualBoxでUSBの設定をすることで実機を認識してアプリを動かすことができました。

 

AVDについてはまだ動いていませんが、ネットで調べたところ手があるかもしれないので試してからまとめて書こうと思います。実機でアプリを動作させることができたので最低限使えることは確認できました。

 

もう1件、以前から気になったことを質問しました。勉強のために同じ仕様のアプリを異なる作り方で何回も試すことがあります。その際共通な部分まで作ったプロジェクトをコピーして別プロジェクトとし、そこから先の作業だけをすれば済むようにしたいのですが、メニューにプロジェクトのコピーがないのでネットで調べたり自分で工夫した方法でやっています。このような状態になっているのはソースコード管理ツールとAndroid Studioを連動させてやればよいことだからなのかなと思ってはいましたが本当にそうなのか質問しました。答えはそうだと思いますということで、また1つ長年気になっていたことが解決しました。

 

本については一気に6章の2/3位まで進みました。細部についてはよく分からないですが、ここら辺はAndroidが裏で色々がんばって表示がひっかからないようにしている仕組みの話であって、だからアプリの書き方にこう影響するという話ではない(むしろ気にしないで書けるようにしている)ので大まかに納得できればよいのかなと思っています。

 

後2回位で1巻は終わり、2巻に入れそうです。

 

先日、Android勉強会2回目を開催しました。

 

前回の復習や仮想環境でAndroid Studioを動かす件を話したりしたのであまり進みませんでしたが、アクティビティのプログラミングで匿名クラス方式と内部クラス方式を少し紹介したので次回はもっと詳しく話をする予定です。

 

3回先の勉強会になりますが、別の会場を試すことになり予約しました。色んな自治体が住民サービスとして会場を提供してくれる良い時代だなと思いました。