Android x86 emulator и google maps/play services

Google и intel сделали крутую штуку – образы андроида для x86 atom, которые работают весьма шустро на x86 платформе, в отличие от тормозных armv7. Но счастье резко заканчивается, когда нужно делать приложение, использующее google apis (maps, play services) – x86 образы есть только для чистого андроида.

Тем не менее, гугол (который поиск) помогает решить эту проблему – мы модифицируем образ в эмуляторе.

1. Устанавливаем библиотеку для google maps

Для этого надо её сначала выдрать из образа armv7, поэтому создаём эмулятор для платформы Google APIs – API Level 18, включаем его и выдираем нужные либы:


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

После этого мы перешиваем образ системного раздела x86 эмулятора (данная магия может применяться и для других задач в будущем)

Запускаем уже x86 (Android 4.3) эмулятор из командной строки с увеличенным разделом и пишем в него выдранные либы


emulator -avd 4.3x86 -partition-size 512
adb remount
adb push com.google.android.maps.xml /system/etc/permissions
adb push com.google.android.maps.jar /system/framework

Теперь нам нужно сохранить образ системного раздела. В интернетах советуют использовать mkfs.yaffs2.x86 и шаманить с ним, но есть значительно более простой способ. Во время работы эмулятора образ системного раздела доступен в хост системе (т.е. той, на которой запущен эмулятор) по адресу C:\Users\[%USER_NAME%]\AppData\Local\Temp\AndroidEmulator\[randomname].tmp (для всяких линупсов и осх поиск файла значительно проще -> /tmp/system.img)

Файл там лежит с нулевым размером, но это не мешает его просто взять, и скопировать в каталог нашего x86 эмулятора под именем system.img

Теперь после ребута эмулятора эти либы будут в нём лежать, как будто так и должно быть.

2. Устанавливаем google play apis

Выкачиваем com.google.android.gms_20130908.apk

и com.android.vending_20130908.apk

Инсталлируем в x86 эмулятор:

adb install com.android.vending-20130716.apk 
adb install com.google.android.gms-20130716.apk 

Вуаля, готово.

Порядок установки лучше соблюдать, иначе библиотека от maps не будет подхватываться и инсталлятор будет ругаться про не найденную shared library.

Similar Posts

  • Диггеры

    Вчера чуть приобщился к движению диггеров – побывал на маленькой экскурсии в киевской дренажке, в её части с названием Никольская Дренажно-Штольная Система – основная часть построена ещё при царе Николае. Довольно интересно там под землей, темно и тихо – только журчание воды слышно, или такой себе дождь в Царском Колодце – место куда стекается множество…

  • Хорватия: по дороге в Сплит.

    Ехать в Хорватию из Венгрии по автобану одно удовольствие. Едешь себе 130 км/ч, через какое-то время появляется КП, общий между Хорватией и Венгрией, т.е. сразу и те, и другие проверяют, благодаря чему контроль проходится быстро и ненавязчиво (У нас такое щас с Польшей делают, только вот непонятно, когда сделают, нужно какую-то евроконвенцию ратифицировать). После выезда…

  • Завтра снова рано вставать на военку… Не хачу!!! Хачу выспацца! Share this post: Share on X (Twitter) Share on Facebook Share on LinkedIn Share on Email Share on Reddit

  • Выходные

    Эти выходные оказались зачетными, обнаружились несколько очень неприятных багов, из-за которых пришлось торчать на работе, ведь на носу Лейпциг 🙂 Теперь я, вроде бы, умею раскручивать стек, имея дамп всей памяти, слава богу ее не очень много, всего 24МБ. Проапгрейдил ассерт, теперь он выдает файл, строку, имя функции в которой произошло нарушение. Написал, как показала…