NO_NAME

適当に技術・仕事・ライフハックの話を書いていく予定です。

Google Maps APIのx86 system imageを作成する

仮想マシンアクセラレーションによるエミュレータの高速化エミュレータ仮想マシンアクセラレーションによる高速化を紹介したがGoogle Maps API用のx86 system imageは配布されていないので、Google Maps APIを使用したい場合、自分でx86 system imageを作成する必要がある。

作成手順

  1. ベースとなるGoogle Maps APIのAVDを立ち上げる。ベースとするx86 system imageと同じAPIバージョンのものを立ち上げること。
  2. Google Maps APIのライブラリを抜き出す。

    adb pull /system/etc/permissions/com.google.android.maps.xml
    adb pull /system/framework/com.google.android.maps.jar
    

  3. ベースとなるGoogle Maps APIのAVDを落とす。
  4. ベースとなるx86 system imageを使ったAVDを立ち上げる。立ち上げる際には
    -partition-size 128
    を指定するなどし、パーティションサイズを大きくしておかないと次のライブラリのコピー時にOut of memoryというエラーが発生し、失敗するので注意。
  5. Google Maps APIのライブラリをコピー。

    adbremount rw
    adb push com.google.android.maps.xml /system/etc/permissions
    adb push com.google.android.maps.jar /system/framework
    

  6. Yaffs2 tool(system imageを作成するためのツール)をダウンロードする。http://jiggawatt.org/badc0de/android/ のYaffs2 tool: x86 Linux version からダウンロードできる。
  7. AVDからsystem imageを作成する。

    adb push mkfs.yaffs2.x86 /data
    adb shell
    cd /data
    chmod 777 mkfs.yaffs2.x86
    ./mkfs.yaffs2.x86 /system system.img
    exit
    

  8. 作成したsystem imageを抜き出す。なぜか非常に時間がかかる。

    adb pull /data/system.img
    

  9. 作成したsystem imageをAVDのディレクトリにコピーする。
    macの場合、

    ~/.android/avd/
    

    の下にある。

  10. エミュレータを再起動する。

参考

38911 bytes free: How to use Google Maps API in Android emulator SDK version 17http://38911bytes.blogspot.de/2012/03/how-to-use-google-maps-api-in-android.html