Expertus metuit
Установка маркета на виртуальный девайс
Опубликовано 2012-03-08 в 13:33

Задача: нужно поставить Market (а теперь он называется Play) на андроидный виртуальный девайс. Широко известная в узких кругах процедура с копирование файла system.img больше не работает, пришлось искать новый способ.

Для работы Market на девайсе должен быть установлен Google Services Framework (gsf), это библиотека для работы с гуглоаккаунтами, нужна практически для всех гугловых приложений. В составе SDK уже есть образы с включённым gsf, именно на виртуальный девайс, основанный на таком образе, мы и будем ставить маркет.

Для начала нужно получить пакет собственно с маркетом, его можно достать из любого телефона, где маркет уже установлен и работает:

% adb -d pull /data/app/com.android.vending-2.apk
3061 KB/s (3708455 bytes in 1.182s)

Узнать точное название пакета очень легко:

 % adb shell pm list packages -f|grep com.android.vending

Сразу установить этот пакет на виртуальном устройстве не получится. Для этого нужно проделать ряд операций: увеличить размер системного раздела, перемонтировать его для записи, записать туда маркет, сохранить образ этого раздела и затем при следующем старте эмулятора подменить стандартный на него.

Запускаем эмулятор девайса специальным образом (расширяем системный раздел до 250 МБ):

% ~/android/android-sdk-linux/tools/emulator -avd gsf-2.3.3 -partition-size 250 -no-snapstorage

Когда девайс загрузится, нужно перемонтировать раздел /system в режим для записи, так как изначально он примонтирован с опциями ro:

% adb -e shell mount|grep system
/dev/block/mtdblock0 /system yaffs2 ro 0 0

для этого из консоли набираем команду:

% adb -e remount

Убедимся, что действительно перемонтировалось:

% adb -e shell mount|grep system
/dev/block/mtdblock0 /system yaffs2 rw 0 0

Проверим, вдруг не девайсе какой пакет с именем com.android.vending уже установлен, он может блокировать настоящий:

% adb -e shell pm list packages -f|grep com.android.vending
package:/system/app/LicenseChecker.apk=com.android.vending

Видим, что стоит какой-то левый пакет LicenseChecker.apk, выносим его нафиг:

% adb -e shell rm /system/app/LicenseChecker.apk

Теперь заходим внутрь девайса через adb и выполняем несколько команд:

% adb -e push com.android.vending-2.apk /system/app/
% adb -e shell chmod 644 /system/app/com.android.vending-2.apk
% adb -e shell rm /system/app/SdkSetup.apk
% cd ~/.android/avd/gsf-2.3.3.avd
% rm -f cache.img userdata-qemu.img snapshots.img snapshots.img.lock

Теперь важный шаг: нужно найти образ раздела /system на диске и сохранить его. Обычно он лежит где-то в каталоге /tmp/android-$USER и называется как-то типа emulator-7vUOGK, копируем его в ~/.android/avd/gsf-2.3.3.avd/system.img. Перезагружаем эмулятор. Всё.

Комментарии

Текст комментария (допустимая разметка: *курсив*, **полужирная**, [ссылка](http://example.com) или <http://example.com>) Посетители-анонимы, обратите внимение, что более чем одна гиперссылка в тексте (включая оную из поля «веб-сайт») приведёт к блокировке комментария для модерации. Зайдите на сайта с использованием аккаунта на twitter, например, чтобы посылать комментарии без этого ограничения.
Имя (обязательно, 50 символов или меньше)
Опциональный email, на который получать ответы (не будет опубликован)
Веб-сайт
© 2006—2023 Sergey Stolyarov | Работает на pyrengine