KVM のゲストに CentOS を入れて AndroidStudio
〜 エミュレーターはゲキ重の ARM しか動作しない 〜

2015-09-03 作成 福島
TOP > tips > android-studio

CentOS の KVM にゲスト OS として CentOS をインストールし、そこに AndroidStudio をインストールします。

AndroidStudio 付属の x86 版 Android エミュレーター (HAXM のこと) は、仮想化技術の上でしか動作しないため、
ゲスト OS で動作させることができません。
代わりに、初期からの ARM 版 Android エミュレーターを使うことができますが、重すぎて使い物になりません。

ここでは、ゲスト OS で AndroidStudio が動作することを確認するまでを説明します。

いつものインストールなら手戻り無しを心掛けて記述しますが、現在の AndroidStudio の仕様がコロコロ変化するので、時系列で記述します。



1. CentOS を用意 (ゲスト OS)

まずは普通に CentOS をインストール。
ここから AndroidStudio をインストールします。

AndroidStudio は GUI で操作するので、インストールモデルの選択を「Desktop」にしました。
● Desktop
○ Minimal Desktop
○ Minimal
○ Basic Server
○ Database Server
○ Web Server
○ Virtual Host
○ Software Development Workstation



2. AndroidStudio のダウンロード
AndroidStudio のダウンロードページから AndroidStudio をダウンロードする。


上記のページを下までスクロールすると、「All Android Studio Packages」の下に Linux 用のパッケージがあるので、これをダウンロード。(約 336MB)
「SDK Tools Only」のほうではないので注意。
この時のファイル名は android-studio-ide-141.2178183-linux.zip でした。




ライセンスに同意するチェックボックスにチェックマークを入れると、ダウンロードすることができます。
□ I have read and agree with the above term and conditions


 ↓



3. AndroidStudio の解凍

AndroidStudio 本体は、zip ファイルを解凍して、中にあるシェルを実行します。
なので、いわゆる「インストール」という作業はありません。

~$ unzip android-studio-ide-141.2178183-linux.zip
~$ ls -l ./android-studio/bin/studio.sh
-rwxr-xr-x. 1 dr dr 6253  8月 18 17:36 2015 ./android-studio/bin/studio.sh


4. AndroidStudio をテスト起動 (1)

環境変数 DISPLAY に対象の X-Windows 端末 (自分です) を指定して AndroidStudio を起動する。

~$ export DISPLAY=unix:0.0
~$ ./android-studio/bin/studio.sh
'tools.jar' が見つからないと表示され、起動しない


JDK Required: 'tools.jar' seems to be not in Studio classpath.
Please ensure JAVA_HOME points to JDK rather than JRE.
yum で java-1.7 (以上) をインストールする
Oracle-java が推奨らしいけど、openjdk でも動作する



5. AndroidStudio をテスト起動 (2)

~$ ./android-studio/bin/studio.sh
以前の環境を引き継ぐかどうかの指定

引き継ぐ環境がないので、
  ● I do not have a previous version of Studio or I do no want to import my settings
を選択する


起動中の画面


インストール直後は、Welcome 画面が表示される
[ Next ] ボタンをクリックして次へ
※次回からは表示されません。


インストールディレクトリーをカスタマイズするかどうかの指定
特に変更しないので、[ Next ] ボタンをクリックして次へ


エミュレーター (HAXM) の設定を促す画面
今回は、ゲスト OS として動作しているため、さらに KVM を使用することはできません
[ Next ] ボタンをクリックして次へ


不足しているパッケージをダウンロード&インストールする確認
[ Finish ] ボタンをクリックして次へ


ダウンロード画面


ダウンロード終了画面
赤い文字でエラーが表示されています。これは後述のパッケージが不足しているためです。
「Unable to run mksdcard SDK tool.」


AndroidStudio の初期画面が表示されました。



6. AndroidStudio をテスト起動 (3)
プロジェクトを作成しようとするが…


「Android SDK が見つからない」と表示されるので、下記メニューから指定する。
Your Android SDK is missing. out of date, or is missing templates.
You Can Configure your SDK via Configure | Project Defaults | Project Structure | SDKs


Configure を選択


Project Defaults を選択


Project Structure を選択


「Android SDK Location:」の […] をクリックすると、ディレクトリー選択のダイアログボックスが開くので、
/home/自分/Android/Sdk/
を選択する。




7. プロジェクトの作成









プロジェクトが作成されました。



8. プロジェクトの実行 (1)

aapt コマンドに問題があり、ビルドできない
※ aapt コマンドから呼び出されるライブラリがインストールされていない
ビルド時に表示されるエラー
Error:org.gradle.process.internal.ExecException: A problem occurred starting process 'command '/home/dr/Android/Sdk/build-tools/19.1.0/aapt''

不足パッケージの調査

~$ ldd -d /home/dr/Android/Sdk/build-tools/19.1.0/aapt
undefined symbol: _ZTVN10__cxxabiv120__si_class_type_infoE, version CXXABI_1.3  (/home/dr/Android/Sdk/build-tools/19.1.0/aapt)
undefined symbol: _ZTVN10__cxxabiv121__vmi_class_type_infoE, version CXXABI_1.3 (/home/dr/Android/Sdk/build-tools/19.1.0/aapt)
undefined symbol: _ZTVN10__cxxabiv117__class_type_infoE, version CXXABI_1.3     (/home/dr/Android/Sdk/build-tools/19.1.0/aapt)
undefined symbol: _ZNSs4_Rep20_S_empty_rep_storageE, version GLIBCXX_3.4        (/home/dr/Android/Sdk/build-tools/19.1.0/aapt)
        linux-gate.so.1 =>  (0x00a5b000)
        librt.so.1 => /lib/librt.so.1 (0x00e54000)
        libdl.so.2 => /lib/libdl.so.2 (0x00d49000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x00358000)
        libz.so.1 => not found
        libstdc++.so.6 => not found
        libm.so.6 => /lib/libm.so.6 (0x0073a000)
        libgcc_s.so.1 => not found
        libc.so.6 => /lib/libc.so.6 (0x00ab6000)
        /lib/ld-linux.so.2 => not found
判明した不足パッケージをインストール

~$ su
# yum -y install libz.so.1 libstdc++.so.6 libgcc_s.so.1 ld-linux.so.2
# exit
~$ ldd -d /home/dr/Android/Sdk/build-tools/19.1.0/aapt
        linux-gate.so.1 =>  (0x00706000)
        librt.so.1 => /lib/librt.so.1 (0x004a5000)
        libdl.so.2 => /lib/libdl.so.2 (0x004e6000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x0044e000)
        libz.so.1 => /lib/libz.so.1 (0x00e50000)
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00978000)
        libm.so.6 => /lib/libm.so.6 (0x00fb7000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x002a2000)
        libc.so.6 => /lib/libc.so.6 (0x004eb000)
        /lib/ld-linux.so.2 (0x00dba000)


9. プロジェクトの実行 (2)

~$ ./android-studio/bin/studio.sh


ビルドは成功するものの、adb コマンドが無いと表示されるので、SDK Manager から Android SDK Platform-tools をインストールする
Tools | Android | SDK Manager をたどる


Default Settings の Appearance & Behavior | System Settings | Android SDK にある SDK Tools タブを選択し、■ Android SDK Platform-tools にチェックを入れて、[ OK ] ボタンをクリックする。



インストール完了画面



10. プロジェクトの実行 (3)
[ Run ] ボタンをクリック


ビルドは成功するものの、エミュレーターが無いためプログラムの動作確認はできません。
※もちろん、AVD Manager で ARM プロセッサの Android Virtual Device を作成すれば動作確認は可能です。