Установка приложений Google в эмулятор Android



    В этой статье описано как установить дополнительные программы (в частности, Google Apps) в эмулятор Android. Это может понадобиться если вы хотите на эмуляторе:
    1. Настроить синхронизацию с аккаунтом Google.
    2. Установить календарь и календарь провайдер.
    3. Установить Android Market.
    4. И прочее…


    Несмотря на то, что можно создать эмулятор Android с Google API, в нём отсутствуют такие важные вещи как адаптеры синхронизации контактов, календарей и прочее…

    Подготовка


    Итак, помимо Android SDK, нам понадобится:
    1. Google Apps (в конце, я брал от CyanogenMod 7).
    2. Утилита для создания нового образа системы mkfs.yaffs2.arm.
    3. Если необходимо иметь полноценную работу с календарём, то добыть Calendar.apk и CalendarProvider.apk. Их можно найти как на просторах Интернет, так и откомпилировать из исходников Android.

    Для удобства в системную переменную PATH добавить пути к android-sdk\tools и android-sdk\platform-tools.

    Создание эмулятора


    Создать эмулятор со следующими параметрами:


    Обратить особое внимание!

    SD карту создать не менее 200Мб!
    Все последующие команды предполагают, что в данный момент активен только один эмулятор. Если у вас запущено несколько эмуляторов/устройств, то к командам с утилитой adb необходимо добавлять параметр -s.

    Подготовка к установке пакетов


    Запустить эмулятор с увеличенным системным разделом
    emulator -avd emulator_2.3.3 -partition-size 150
    

    Перемонтировать системный раздел для записи (спасибо за лёгкий способ перемонтирования ArtRoman):
    adb remount
    

    Удалить пакет от SDK, который при загрузке эмулятора возвращает все настройки к дефолтным:
    Войти в шелл:
    adb shell
    

    rm /system/app/SdkSetup.apk
    

    Выйти из шелла
    exit
    


    Установка необходимых пакетов


    Извлечь приложения из архива с Google Apps (папка system\app).
    Установить пакеты:
    adb push CarHomeGoogle.apk /system/app
    adb push FOTAKill.apk /system/app
    adb push GenieWidget.apk /system/app
    adb push GoogleBackupTransport.apk /system/app
    adb push GoogleCalendarSyncAdapter.apk /system/app
    adb push GoogleContactsSyncAdapter.apk /system/app
    adb push GoogleFeedback.apk /system/app
    adb push GooglePartnerSetup.apk /system/app
    adb push GoogleQuickSearchBox.apk /system/app
    adb push GoogleServicesFramework.apk /system/app
    adb push LatinImeTutorial.apk /system/app
    adb push MarketUpdater.apk /system/app
    adb push MediaUploader.apk /system/app
    adb push NetworkLocation.apk /system/app
    adb push OneTimeInitializer.apk /system/app
    adb push SetupWizard.apk /system/app
    adb push Talk.apk /system/app
    adb push Vending.apk /system/app
    

    Подобным образом устанавить дополнительные приложения (например, Calendar.apk и CalendarProvider.apk).

    Создание нового образа системы


    Загрузить в эмулятор утилиту создания образа:
    adb push mkfs.yaffs2.arm /system/app
    

    Дать права на запуск этой утилиты
    adb shell
    

    chmod 777 /system/app/mkfs.yaffs2.arm
    

    Проверить, что все пакеты попали в /system/app:
    ls /system/app
    


    Сделать образ системы на SD карту
    /system/app/mkfs.yaffs2.arm /system /sdcard/system.img
    


    Выйти из шелла
    exit
    

    Теперь придётся набраться терпения, и слить полученный образ «adb pull /sdcard/system.img d:\temp». Скорость примерно 59Кб/с, примерно 25 минут для 100Мб образа.

    Закрыть эмулятор.
    Из c:\Users\\.android\avd\emulator_2.3.3.avd\ удалить cache.img и userdata-qemu.img (если они есть). Залить в эту папку полученный образ system.img.

    Эмулятор готов!

    Первый запуск


    Запустить эмулятор
    emulator -avd emulator_2.3.3
    


    Нас встречает робот

    Меняем язык на русский

    Войти под аккаунтом Google из этого мастера настроек у меня не получилось. Не смог выдвинуть клавиатуру :).


    В итоге пришлось настраивать синхронизацию позже




    Заключение


    Вот и всё! Всем успехов в разработке!

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 17

      +1
      Любопытно)) До сих пор не понимаю, зачем уменьшать размер системного раздела под используемый размер.

      Пара замечаний:
      — Перемонтировать системный раздел в режим чтения/записи – adb remount должен сработать тоже, команда проще, ошибиться тяжелее.
      — слить полученный образ «adb pull /sdcard/system.img d:\temp». – флешка монтируется как iso-образ, достаточно его примонтировать или открыть каким-нибудь винраром, время копирования уменьшится до пары минут.
        0
        adb remount работает, спасибо!
        Попробовал sdcard.img открыть 7z и Daemon Tools. Не получилось :(.
          0
          Прошу прощения, это всё же действительно img, а не iso. Но формат в образе стандартный (msdos), поэтому в маке этот файл монтируется дабл-кликом. На винде можно попробовать воспользоваться ultraISO или чем-то подобным.
      • UFO just landed and posted this here
          0
          1. Для меня важна была синхронизация контактов и календарей с аккаунтом Google. А без установки Google Apps синхронизация не работала (писалось Sync is OFF — отсутсвовали адаптеры синхронизации).
          2. В указанной статье (и во многих других) не описано, что нужно сделать новый system.img! После перезагрузки эмулятора все приложения пропадали, SdkSetup.apk был опять на месте. Уж не знаю, что я не так делал…
          • UFO just landed and posted this here
              0
              Тогда понятно. Во всех статьях написано, что эти файлы нужно удалять. Странно… В следующий раз попробую.
                0
                Ой! «не» не заметил! Так я их всегда удалял, и эмулятор возвращался в своё первоначальное состояние!
                  0
                  При записи в /system системный образ наверняка не меняется, поэтому потом опять всё получаем как было. В любом случае, описанный в статье способ достаточно удобный, ведь на выходе мы получем один образ, который можно использовать и для других виртуальных андроидов.
                    0
                    Совершенно верно! Я этот system.img уже распространил среди коллег :)
              0
              Спасибо за статью. Помню пытался быстро сотворить подобное по нужде, танцевал-танцевал с бубном, но так и не добился нормальной работы. Плюнул и делал все на «железе» :) Не додумался Google Apps из CyanogenMod выдрать, у меня были какие-то стрёмные. Попробую настроить по вашему гайду, полезная вещь иногда.
                0
                Спасибо. У меня как-раз с этим были проблемы. Очень пригодится.
                  +2
                  Ну я поступил проще:
                  adb shell
                  cat /dev/mtd/mtd2 > /sdcard/system.img
                  exit

                  На реальном телефоне:) И вставить полученный образ в эмулятор — все работает:)
                    0
                    Тут подробная инструкция по созданию образов.
                    0
                    Как раз то, что мне ща нужно. Спасибо большое автору!

                    У меня при установке приложений выдавало out of memory, увеличение -partition-size до 250 помогло.
                      0
                      > Войти под аккаунтом Google из этого мастера настроек у меня не получилось. Не смог выдвинуть клавиатуру :)
                      У меня клавиатура выдвинулась по двойному щелчку в поле ввода.
                        0
                        Пушить сразу все файлы в Linux можно одной командой:
                        find -type f -exec adb push {} /system/app/ \;

                        Only users with full accounts can post comments. Log in, please.