Androidエミュレータを使って自動テストをまわそうと思っても、エミュレータの起動速度が通常は遅いですよね・・・
その高速化方法として、インテルのx86向け高速化オプションを現在のAVDでは選択可能です。
しかし、GoogleAPIを利用可能な版は提供されていない・・・
ということで、今回は実際に行ったGoogleAPIを利用可能にしたインテルx86高速化対応版システムイメージの作り方をメモがてら。
参考1: http://t-tech.hatenablog.com/entry/2012/07/27/151705
参考2: http://isisredirect.blogspot.jp/2013/04/test-titanium-android-app-on-emulator.html
システムイメージの作成
以下の手順に沿い、システムイメージを作成、AVDを再起動させます。
1. GoogleAPIが有効な、適当なAndroid Virtual Deviceを起動させます
高速化対応を行いたいAndroid APIと同一バージョンのGoogleAPIが有効なインスタンスを起動してください
2. Google APIのファイルを取り出します。※下記では、GoogleMAP
$ adb pull /system/etc/permissions/com.google.android.maps.xml $ adb pull /system/framework/com.google.android.maps.jar
3. エミュレータを終了します
4. 以下コマンドにより、既にインテルの高速化対応版となっているシステムイメージを起動します
たいていは、Android APIを使う版のAVD設定で十分だと思います。
$ emulator -avd target device name -partition-size 512
5. 2により取得したフィアルを以下の通り4で起動したエミュレータにpushします
$ adb remount rw $ adb push com.google.android.maps.xml /system/etc/permissions $ adb push com.google.android.maps.jar /system/framework
6. 5の状態でシステムイメージを固めるためにYaffs2を使います
- http://jiggawatt.org/badc0de/android/
- Yaffs2 tool: x86 Linux version
7. Yaffs2にてシステムイメージを作成
$ adb push mkfs.yaffs2.x86 /data $ adb shell $ cd /data $ chmod 777 mkfs.yaffs2.x86 $ ./mkfs.yaffs2.x86 /system system.img $ exit
8. AVDのシステムイメージを、端末ローカルのストレージに取得します
$ adb pull /data/system.img
9. 今作成したイメージをコピーし、次回起動よりこのシステムイメージが起動されるようにします
- If you would like to replace system image of android API level 18, please replace as below
$ cp system.img android-sdk/system-images/android-18/x86/system.img