Эмулятор Android Studio не поставляется с Play Store для API 23

Я выбрал этот эмулятор из новейшей версии Android Studio AVD.

API Google

Я выбрал последнюю версию API Android 23. Поскольку он говорит "с API Google", я думал, что на самом деле это будет включать все приложения Google, включая Play Store, чтобы я мог устанавливать приложения, такие как Facebook.

Я видел другие темы на SO, которые теперь устарели (Как установить приложение Google Play в эмулятор Android Studio?), в этом приведены инструкции по установке Приложения Google, основанные на универсальных пакетах, но только для Android 4.3 API 18: http://wiki.rootzwiki.com/Google_Apps#Universal_Packages_2

Я хотел бы использовать API API 23. Есть ли способ установить пакет Google Apps на эмулятор?

Кажется странным, что официальный эмулятор Android не входит в стандартную комплектацию всех приложений Google в первую очередь... Это не похоже на поддержку Google, и потенциальным средним разработчикам придется покупать фактические устройства для разработки для API 23?

Ответ 1

Мне нужно было сделать это недавно в эмуляторе API 23 и после это руководство. Он работает для эмулятора API 23, поэтому у вас не должно быть проблем.

Примечание. Все отзывы принадлежат автору связанного сообщения в блоге (pyoor). Я просто размещаю его здесь, если ссылка по какой-либо причине разрывается.

....

Загрузить пакет GAPPS

Затем нам нужно вынуть соответствующий пакет Google Apps, соответствующий нашей версии Android AVD. В этом случае хорошо используйте пакет "gapps-lp-20141109-signed.zip". Вы можете скачать этот файл из BasketBuild здесь.

[[email protected]]$ md5sum gapps-lp-20141109-signed.zip
367ce76d6b7772c92810720b8b0c931e gapps-lp-20141109-signed.zip

Чтобы установить Google Play, необходимо нажать следующие 4 APK на наш AVD (расположенный в. /system/priv -app/):

GmsCore.apk, GoogleServicesFramework.apk, GoogleLoginService.apk, Phonesky.apk

[[email protected]]$ unzip -j gapps-lp-20141109-signed.zip \
system/priv-app/GoogleServicesFramework/GoogleServicesFramework.apk \
system/priv-app/GoogleLoginService/GoogleLoginService.apk \
system/priv-app/Phonesky/Phonesky.apk \
system/priv-app/GmsCore/GmsCore.apk -d ./

Нажмите APK на эмулятор

При извлечении наших APK, запустите наш AVD, используя следующую команду.

[[email protected] tools]$ ./emulator @<YOUR_DEVICE_NAME> -no-boot-anim

Это может занять несколько минут с момента создания AVD. После запуска нам необходимо перемонтировать системный раздел AVD как чтение/запись, чтобы мы могли нажимать наши пакеты на устройство.

[[email protected]]$ cd ~/android-sdk/platform-tools/
[[email protected] platform-tools]$ ./adb remount

Затем нажмите APK на наш AVD:

[[email protected] platform-tools]$ ./adb push GmsCore.apk /system/priv-app/
[[email protected] platform-tools]$ ./adb push GoogleServicesFramework.apk /system/priv-app/
[[email protected] platform-tools]$ ./adb push GoogleLoginService.apk /system/priv-app/
[[email protected] platform-tools]$ ./adb push Phonesky.apk /system/priv-app

Profit!

И, наконец, перезагрузите эмулятор с помощью следующих команд:

[[email protected] platform-tools]$ ./adb shell stop && ./adb shell start

Как только эмулятор перезагрузится, мы увидим, что пакет Google Play появится в панели запуска. После связывания аккаунта Google с этим AVD теперь у нас есть полностью работающая версия Google Play, работающая под нашим эмулятором.

Ответ 2

Ниже приведен метод, который работал у меня на эмуляторах API 23-25 ​​. Объяснение дается для API 24, но почти одинаково работает для других версий.

Кредиты: Джон Доу, zaidorx, pjl.

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


  • В AVD-менеджере студии Android (проверенном на версии 2.2.3) создайте новый эмулятор с целевым "Android 7.0 (Google API)": Экран AVD после создания эмулятора.

  • Загрузите последний Открыть пакет GApps для архитектуры эмулятора (CPU/ABI). В моем случае это было x86_64, но это может быть что-то еще в зависимости от вашего выбора изображения во время создания мастера создания устройства. Интересно, что архитектура кажется более важной, чем правильная версия Android (т.е. Gapps для 6.0 также работает с эмулятором 7.0).

  • Извлеките файлы .apk, используя следующие пути (относительно open_gapps-x86_64-7.0-pico-201#####.zip):

    .zip\Core\gmscore-x86_64.tar.lz\gmscore-x86_64\nodpi\priv-app\PrebuiltGmsCore\
    .zip\Core\gsfcore-all.tar.lz\gsfcore-all\nodpi\priv-app\GoogleServicesFramework\
    .zip\Core\gsflogin-all.tar.lz\gsflogin-all\nodpi\priv-app\GoogleLoginService\
    .zip\Core\vending-all.tar.lz\vending-all\nodpi\priv-app\Phonesky\
    

    Обратите внимание: Open GApps использует сжатие Lzip, которое можно открыть с помощью инструмента, найденного на веб-сайте Lzip 1, 2 или на Mac с использованием доморощенного: brew install lzip. Затем, например, lzip -d gmscore-x86_64.tar.lz.

    Я предоставляю пакетный файл, который использует 7z.exe и lzip.exe для автоматического извлечения всех необходимых .apk (в Windows ):

    @echo off
    echo.
    echo #################################
    echo Extracting Gapps...
    echo #################################
    7z x -y open_gapps-*.zip -oGAPPS
    
    echo Extracting Lzips...
    lzip -d GAPPS\Core\gmscore-x86_64.tar.lz
    lzip -d GAPPS\Core\gsfcore-all.tar.lz
    lzip -d GAPPS\Core\gsflogin-all.tar.lz
    lzip -d GAPPS\Core\vending-all.tar.lz
    
    move GAPPS\Core\*.tar
    
    echo. 
    echo #################################
    echo Extracting tars...
    echo #################################
    
    7z e -y -r *.tar *.apk
    
    echo.
    echo #################################
    echo Cleaning up...
    echo #################################
    rmdir /S /Q GAPPS
    del *.tar
    
    echo.
    echo #################################
    echo All done! Press any key to close.
    echo #################################
    pause>nul
    

    Чтобы использовать это, сохраните script в файле (например, unzip_gapps.bat) и поместите все значение в одну папку, как показано ниже: Как это должно выглядеть...

  • Обновите двоичный файл su, чтобы иметь возможность изменять разрешения файлов, которые мы будем загружать позже. Новый новый двоичный файл su можно найти в SuperSU пакетом Chainfire "Восстановление flashable" zip. Получите zip, извлеките его где-нибудь, создайте пакетный файл со следующим содержимым в той же папке и, наконец, запустите его:

    adb root
    adb remount
    
    adb push eu.chainfire.supersu_2.78.apk /system/app/
    adb push x64/su /system/xbin/su
    adb shell chmod 755 /system/xbin/su
    
    adb shell ln -s /system/xbin/su /system/bin/su
    adb shell "su --daemon &"
    adb shell rm /system/app/SdkSetup.apk
    
  • Поместите все файлы .apk в одну папку и создайте пакетный файл с этим содержимым 3:

    START /B E:\...\android-sdk\tools\emulator.exe @Nexus_6_API_24 -no-boot-anim -writable-system
    adb wait-for-device
    adb root
    adb shell stop
    adb remount
    adb push PrebuiltGmsCore.apk /system/priv-app/PrebuiltGmsCore
    adb push GoogleServicesFramework.apk /system/priv-app/GoogleServicesFramework
    adb push GoogleLoginService.apk /system/priv-app/GoogleLoginService
    adb push Phonesky.apk /system/priv-app/Phonesky/Phonesky.apk
    adb shell su root "chmod 777 /system/priv-app/**"
    adb shell su root "chmod 777 /system/priv-app/PrebuiltGmsCore/*"
    adb shell su root "chmod 777 /system/priv-app/GoogleServicesFramework/*"
    adb shell su root "chmod 777 /system/priv-app/GoogleLoginService/*"
    adb shell su root "chmod 777 /system/priv-app/Phonesky/*"
    adb shell start
    

    Обратите внимание, что путь E:\...\android-sdk\tools\emulator.exe должен быть изменен в соответствии с расположением Android SDK в вашей системе.

  • Выполните вышеуказанный командный файл (консоль должна выглядеть так далее):

    O:\123>START /B E:\...\android-sdk\tools\emulator.exe @Nexus_6_API_24 -no-boot-anim -writable-system
    
    O:\123>adb wait-for-device
    Hax is enabled
    Hax ram_size 0x60000000
    HAX is working and emulator runs in fast virt mode.
    emulator: Listening for console connections on port: 5554
    emulator: Serial number of this emulator (for ADB): emulator-5554
    
    O:\123>adb root
    
    O:\123>adb shell stop
    
    O:\123>adb remount
    remount succeeded
    
    O:\123>adb push PrebuiltGmsCore.apk /system/priv-app/PrebuiltGmsCore/
    [100%] /system/priv-app/PrebuiltGmsCore/PrebuiltGmsCore.apk
    
    O:\123>adb push GoogleServicesFramework.apk /system/priv-app/GoogleServicesFramework/
    [100%] /system/priv-app/GoogleServicesFramework/GoogleServicesFramework.apk
    
    O:\123>adb push GoogleLoginService.apk /system/priv-app/GoogleLoginService/
    [100%] /system/priv-app/GoogleLoginService/GoogleLoginService.apk
    
    O:\123>adb push Phonesky.apk /system/priv-app/Phonesky/Phonesky.apk
    [100%] /system/priv-app/Phonesky/Phonesky.apk
    
    O:\123>adb shell su root "chmod 777 /system/priv-app/**"
    
    O:\123>adb shell su root "chmod 777 /system/priv-app/PrebuiltGmsCore/*"
    
    O:\123>adb shell su root "chmod 777 /system/priv-app/GoogleServicesFramework/*"
    
    O:\123>adb shell su root "chmod 777 /system/priv-app/GoogleLoginService/*"
    
    O:\123>adb shell su root "chmod 777 /system/priv-app/Phonesky/*"
    
    O:\123>adb shell start
    
  • Когда эмулятор загружается - закройте его, удалите виртуальное устройство, а затем создайте еще один, используя тот же системный образ. Это исправляет невосприимчивое приложение Play Store, "Службы Google Play прекратили" и аналогичные проблемы. Это работает, потому что на предыдущих этапах мы фактически модифицировали сам образ системы (посмотрите на дату, измененную на android-sdk\system-images\android-24\google_apis\x86_64\system.img). Это означает, что все устройства, созданные с этого момента вместе с системным изображением, будут установлены gapps!

  • Запустите новый AVD. Если для загрузки требуется слишком много времени, закройте его и вместо этого запустите его, используя:

    START /B E:\...\android-sdk\tools\emulator.exe @Nexus_6_API_24
    adb wait-for-device
    adb shell "su --daemon &"
    

    После запуска AVD вы увидите изображение ниже - обратите внимание на значок Play Store в углу!

Первая загрузка с установленным Play Store.


3 - Я не уверен, что все эти команды необходимы, и, возможно, некоторые из них слишком переполнены... похоже, что это работает - что и есть.:)

Ответ 3

Теперь нет необходимости загружать на стороне какие-либо пакеты для выполнения любых скриптов, чтобы получить Play Store на эмуляторе. Начиная с Android Studio 2.4 теперь вы можете создать AVD, на котором установлен Play Store. В настоящее время он поддерживается только на AVD, работающих под управлением Android 7.0 (API 24).

Официальный источник

AVD с Play Store

Примечание. Совместимые устройства обозначаются новым столбцом Play Store.

Ответ 4

Хотелось прокомментировать последний ответ, но без логина его можно было только ответить:

Чтобы избавиться от "ошибки только для чтения", просто остановите устройство сразу после его готовности. Мой script выглядит следующим образом:

#!/bin/bash 
~/bin/AndroidSdk/tools/emulator @Nexus_6P_API_23 -no-boot-anim &
adb wait-for-device
adb shell stop
adb remount
adb push GmsCore.apk /system/priv-app
adb push GoogleServicesFramework.apk /system/priv-app
adb push GoogleLoginService.apk /system/priv-app
adb push Phonesky.apk /system/priv-app
adb shell start

Ответ 5

Перейдите в http://opengapps.org/ и загрузите версию pico вашей платформы и версии Android. Разархивируйте загруженную папку, чтобы получить
1. GmsCore.apk
2. GoogleServicesFramework.apk
3. GoogleLoginService.apk
4. Phonesky.apk

Затем найдите файл emulator.exe. Вероятно, вы найдете его в
<сильные > C:\Users\<your_user_name > \AppData\Local\Android\SDK\инструменты

Запустите команду:
эмулятор -avd < YOUR_EMULATOR'S_NAME > -netdelay none -netspeed full -no-boot-anim -writable-system

Примечание. Используйте -writable-system для запуска вашего эмулятора с загружаемым системным изображением.

Тогда,
adb root
adb remount
adb push < PATH_TO GmsCore.apk > /Система/собств-приложение
adb push < PATH_TO GoogleServicesFramework.apk > /Система/собств-приложение
adb push < PATH_TO GoogleLoginService.apk > /Система/собств-приложение
adb push < PATH_TO Phonesky.apk > /Система/собств-приложение

Затем перезагрузите эмулятор
остановка оболочки adb
начало работы adb

Чтобы проверить запуск,
пакеты списка объявлений adb shell, и вы найдете com.google.android.gms пакет для google

Ответ 6

На данный момент установка apks в каталог /system работает с использованием команды adb push.

Некоторая скрытая служба автоматически перемонтировала каталог /system в режиме read-only.

В любом случае мне удалось установить Play Store в обычную виртуальную машину (т.е. виртуальную машину, отличную от Google-Api), просто установив файл system.img из моей ОС и скопировав файлы.

# To be executed as root user in your Unix based OS
mkdir sys_temp
mount $SDK_HOME/system-images/android-23/default/x86/system.img sys_temp -o loop
cp Phonesky.apk GmsCore.apk GoogleLoginService.apk GoogleServicesFramework.apk ./sys_temp/priv-app/
umount sys_temp
rmdir sys_temp

Файлы APK можно вытащить с любого реального устройства Android, использующего Google Apps, с помощью команды adb pull

[Чтобы получить точный путь apks, мы можем использовать команду pm list packages -f внутри оболочки adb]

Ответ 7

Здесь script я используется для linux для экземпляра Nexus 5 API 24 x86 БЕЗ GoogleApis.

#!/bin/sh

~/Android/Sdk/tools/emulator @A24x86 -no-boot-anim -writable-system & #where A24x86 is the name i gave to my instance
~/Android/Sdk/platform-tools/adb wait-for-device
~/Android/Sdk/platform-tools/adb root
~/Android/Sdk/platform-tools/adb shell stop
~/Android/Sdk/platform-tools/adb remount
~/Android/Sdk/platform-tools/adb push ~/gapps/PrebuiltGmsCore.apk /system/priv-app/PrebuiltGmsCore/PrebuiltGmsCore.apk
~/Android/Sdk/platform-tools/adb push ~/gapps/GoogleServicesFramework.apk /system/priv-app/GoogleServicesFramework/GoogleServicesFramework.apk
~/Android/Sdk/platform-tools/adb push ~/gapps/GoogleLoginService.apk /system/priv-app/GoogleLoginService/GoogleLoginService.apk
~/Android/Sdk/platform-tools/adb push ~/gapps/Phonesky.apk /system/priv-app/Phonesky/Phonesky.apk
~/Android/Sdk/platform-tools/adb shell "chmod 777 /system/priv-app/PrebuiltGmsCore /system/priv-app/GoogleServicesFramework"
~/Android/Sdk/platform-tools/adb shell "chmod 777 /system/priv-app/GoogleLoginService /system/priv-app/Phonesky"
~/Android/Sdk/platform-tools/adb shell "chmod 777 /system/priv-app/PrebuiltGmsCore/PrebuiltGmsCore.apk"
~/Android/Sdk/platform-tools/adb shell "chmod 777 /system/priv-app/GoogleServicesFramework/GoogleServicesFramework.apk"
~/Android/Sdk/platform-tools/adb shell "chmod 777 /system/priv-app/GoogleLoginService/GoogleLoginService.apk"
~/Android/Sdk/platform-tools/adb shell "chmod 777 /system/priv-app/Phonesky/Phonesky.apk"
~/Android/Sdk/platform-tools/adb shell start

Это сделало это для меня.

ВАЖНО:, чтобы остановить приложение из-за сбоя, не забудьте предоставить разрешения на размещение в Google Play.

Конфигурация- > Приложения- > Конфигурация (значок Gear) → Разрешения на доступ- > Местоположение → (Вверху справа) → Показать систему- > Включить службы Google Play

Ответ 8

Просто хочу добавить еще одно решение для реальных пользователей React, которым просто нужно приложение Expo.

  • Установите Expo приложение
  • Откройте проект
  • Нажмите "Устройство" → "Открыть на Android". На этом этапе Expo установит приложение Android для экспонирования, и вы сможете его открыть.