Arch LinuxでAndroid開発環境構築

昨日に引き続き、Arch Linuxの環境構築の話。あとでまたOS自体のインストールをし直したりするとまた詰まりそうなのでメモ。

書いていて気づいたけど、普通にWikiに全部書いてあった。

基本的にArch Wikiに書いてあるとおりにやれば問題ない。

Android - ArchWiki

前提

SDKの管理はAndroid Studioに任せる。そのため、2.1 Android SDK コアコンポーネントの項から2.3 Androidシステムイメージまではすっ飛ばす。 ただし、エミュレータを使う場合は、2.1のノートに書かれているようにmultilibリポジトリは有効にしておく。

Android Studio

  1. yaourt -S android-studio
  2. 2.1や2.3を飛ばしているので、起動時にSDKパス指定ダイアログが表示されるが、この段階ではないので閉じる
  3. Tools -> Android -> SDKManager
  4. たしかインストールウィンドウが表示されたので、そのままインストー

最近は標準のエミュレータの性能もよくなってきているため、AVDマネージャから使おうとしたら起動できなかった。これに関しては後述。

ADBの実機設定

Wikiの通り。今回はudevルールを使った。

  1. pacman -S android-tools
  2. pacman -S android-udev
  3. USBデバッグをONにしたデバイスを接続してlsusbでベンダー、プロダクトIDをメモ
  4. Wikiのテンプレートを使って設定
  5. # udevadm control --reload-rules
  6. 接続し直して、このPCからのデバッグを許可するかでたらOK

adbuserのようなユーザ設定をするように書いてあるが、特にやらなくても動いた。

エミュレータの起動

BIOSから事前にIntel VT-xあたりを有効にしておく。

AVDマネージャから起動しようとすると、ウィンドウ下部に"Starting AVD…“のようなプログレスバーがでるが、そのまま起動しなかった。エラーメッセージも出なかったため、ターミナル上で実行して確認する。

export ANDROID_SDK_HOME=/home/inab/Android/Sdk  # SDKインストール時に変更しなければここにあるはず
cd $ANDROID_SDK_HOME/tools
./emulator -list-avds  # AVD名の確認
./emulator @Nexus_5X_API_21 --verbose  # 先程確認した名前を@以降に指定、ここではNexus_5X_API_22

glxinfo: command not found

これはWikiに書いてあるように、mesa-demosパッケージをインストール。

libGLに関するエラー

Wikiの"libGL error: failed to load driver: swrast"の項を参照。

自分はWikiのこの項に気づかずに相当時間を食った。

ncursesに関するエラー

AURのlib32-ncurses5-compat-libsが必要。yaourtコマンドで直接指定しても見つからなかった。ncursesのcompatライブラリ含めて全部一括で入るので、AURのaosp-develパッケージを入れると楽。

Androidビルドをするつもりがない人や、ミニマルに保ちたい人は個別でインストール。

Wikiの"Androidのビルド"の項にも書いてあるが、PGP署名のエラーがでるので、署名をインポート(gpg --recv-keys 702353E0F7E48EDB

まとめ

Wiki読め