L'émulateur Android Studio n'est pas fourni avec Play Store pour API 23
j'ai sélectionné cet émulateur à partir de la nouvelle version D'Android Studio AVD.
j'ai sélectionné la dernière version de l'API android 23. Parce qu'il est dit "avec Google APIs", j'ai pensé qu'il inclurait en fait toutes les applications Google, y compris Play Store afin que je puisse installer des applications comme Facebook.
j'ai vu d'autres fils sur SO qui semble être périmé maintenant ( comment installer l'application Google Play dans L'émulateur Android Studio? ), celui-ci donne des instructions pour installer googleapps basé sur des paquets universels, mais il ne va Jusqu'à Android 4.3 API 18: http://wiki.rootzwiki.com/Google_Apps#Universal_Packages_2
je voudrais celui pour API 23. Y a-t-il un moyen d'installer le paquet Googleapps sur l'émulateur?
Il semble étrange que l'officiel l'émulateur android n'est pas standard avec toutes les applications google...Cela ne semble pas très favorable à google et est-ce que cela signifie que les développeurs devront acheter des appareils réels à développer pour API 23?
8 réponses
j'ai dû faire cela récemment sur L'émulateur API 23, et j'ai suivi ce guide . Cela fonctionne pour L'émulateur API 23, donc vous ne devriez pas avoir de problème.
Note: Tout le mérite revient à l'auteur du billet de blog relié (pyoor). Je le poste juste ici au cas où le lien casse pour n'importe quelle raison.
....
télécharger le paquet GAPPS
Ensuite, nous devons retirez le paquet Googleapps correspondant à notre version AVD Android. Dans ce cas, nous utiliserons le 'gapps-lp-20141109-signed.zip'. Vous pouvez télécharger ce fichier à partir de BasketBuild ici .
[pyoor@localhost]$ md5sum gapps-lp-20141109-signed.zip
367ce76d6b7772c92810720b8b0c931e gapps-lp-20141109-signed.zip
afin d'installer Google Play, nous aurons besoin de pousser les 4 apk suivants à notre AVD (situé dans ./ system / priv-app/):
GmsCore.apk, Googleservicesfram Framework.apk, GoogleLoginService.apk, Phonesky.apk
[pyoor@localhost]$ 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 ./
Pousser les Apk sur l'Émulateur
avec nos APK extraits, lançons notre AVD en utilisant la commande suivante.
[pyoor@localhost tools]$ ./emulator @<YOUR_DEVICE_NAME> -no-boot-anim
Cela peut prendre plusieurs minutes la première fois que l'AVD est créé. Une fois démarré, nous devons remonter la partition système AVDs en lecture/écriture afin de pouvoir pousser nos paquets sur le périphérique.
[pyoor@localhost]$ cd ~/android-sdk/platform-tools/
[pyoor@localhost platform-tools]$ ./adb remount
ensuite, poussez les APK de notre AVD:
[pyoor@localhost platform-tools]$ ./adb push GmsCore.apk /system/priv-app/
[pyoor@localhost platform-tools]$ ./adb push GoogleServicesFramework.apk /system/priv-app/
[pyoor@localhost platform-tools]$ ./adb push GoogleLoginService.apk /system/priv-app/
[pyoor@localhost platform-tools]$ ./adb push Phonesky.apk /system/priv-app
Profit!
et enfin, redémarrer l'émulateur en utilisant les commandes suivantes:
[pyoor@localhost platform-tools]$ ./adb shell stop && ./adb shell start
une fois que L'émulateur redémarre, nous devrions voir le paquet Google Play apparaître dans le menu lanceur. Après avoir associé un compte Google avec cet AVD, nous avons maintenant une version entièrement fonctionnelle de Google Play fonctionnant sous notre émulateur.
Ci-dessous est la méthode qui a fonctionné pour moi sur API 23-25 émulateurs. L'explication est fournie pour L'API 24 mais fonctionne de façon presque identique pour les autres versions.
crédits : Jon Doe. , zaidorx , pjl .
Chaud des conseils pour les lecteurs: s'il vous plaît aller sur les étapes avant de les suivre, car certains sont automatisés via des scripts fournis.
-
dans le gestionnaire AVD D'Android studio (testé sur v2.2.3), Créer un nouvel émulateur avec la cible" Android 7.0 (Google APIs)":
-
télécharger le dernier paquet Open GApps pour l'architecture de l'émulateur (CPU/ABI). Dans mon cas, c'était
x86_64
, mais ça peut être autre chose selon votre choix d'image pendant l'assistant de création de périphérique. Fait intéressant, l'architecture semble plus importante que la version Android correcte (c.-à-d. gapps pour 6.0 fonctionne également sur un émulateur 7.0). -
extraire les fichiers
.apk
en utilisant les chemins suivants (relatifs à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\
notez que les applications ouvertes utilisent la compression Lzip, qui peut être ouverte en utilisant l'un ou l'autre des outils présents sur le site Web de Lzip. 1 , 2 , ou sur Mac en utilisant homebrew:
brew install lzip
. Puis par exemplelzip -d gmscore-x86_64.tar.lz
.je fournis un fichier par lot qui utilise
7z.exe
etlzip.exe
pour extraire tout nécessaire.apk
s automatiquement (sous 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
pour utiliser ceci, enregistrez le script dans un fichier (par exemple
unzip_gapps.bat
) et mettez tout ce qui est pertinent dans un dossier, comme démontré ci-dessous: -
mettre à jour le binaire
su
pour être en mesure de modifier les permissions des fichiers que nous allons télécharger plus tard. Un nouveausu
binaire peut être trouvé dans le SuperSU par Chainfire package Récupération "flashable"zip
. Obtenir le zip, extraire quelque part, créer un fichier batch avec le contenu suivant dans le même dossier, et enfin de l'exécuter: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
-
mettez tous les fichiers
.apk
dans un dossier et créez un fichier par lot avec ces contenus 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
notez que le chemin
E:\...\android-sdk\tools\emulator.exe
doit être modifié en fonction de l'emplacement du SDK Android sur votre système. -
exécutez le fichier batch ci-dessus (la console devrait ressembler à ceci par la suite):
O:3>START /B E:\...\android-sdk\tools\emulator.exe @Nexus_6_API_24 -no-boot-anim -writable-system O:3>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:3>adb root O:3>adb shell stop O:3>adb remount remount succeeded O:3>adb push PrebuiltGmsCore.apk /system/priv-app/PrebuiltGmsCore/ [100%] /system/priv-app/PrebuiltGmsCore/PrebuiltGmsCore.apk O:3>adb push GoogleServicesFramework.apk /system/priv-app/GoogleServicesFramework/ [100%] /system/priv-app/GoogleServicesFramework/GoogleServicesFramework.apk O:3>adb push GoogleLoginService.apk /system/priv-app/GoogleLoginService/ [100%] /system/priv-app/GoogleLoginService/GoogleLoginService.apk O:3>adb push Phonesky.apk /system/priv-app/Phonesky/Phonesky.apk [100%] /system/priv-app/Phonesky/Phonesky.apk O:3>adb shell su root "chmod 777 /system/priv-app/**" O:3>adb shell su root "chmod 777 /system/priv-app/PrebuiltGmsCore/*" O:3>adb shell su root "chmod 777 /system/priv-app/GoogleServicesFramework/*" O:3>adb shell su root "chmod 777 /system/priv-app/GoogleLoginService/*" O:3>adb shell su root "chmod 777 /system/priv-app/Phonesky/*" O:3>adb shell start
-
lorsque l'émulateur charge - fermez-le, supprimez le dispositif virtuel et créez-en un autre en utilisant la même image système . Cela corrige le magasin de jeu insensible app, "Google Play Services a cessé" et des problèmes similaires. Cela fonctionne parce que dans les étapes précédentes nous avons effectivement modifié l'image du système lui-même (jetez un oeil à la Date de modification sur
android-sdk\system-images\android-24\google_apis\x86_64\system.img
). Cela signifie que chaque appareil créé à partir de maintenant avec l'image du système aura gapps installé! -
Démarrer la nouvelle AVD. Si le chargement prend un temps inhabituellement long, fermez-le et démarrez-le.
START /B E:\...\android-sdk\tools\emulator.exe @Nexus_6_API_24 adb wait-for-device adb shell "su --daemon &"
après le début de L'AVD, vous verrez l'image ci - dessous-notez l'icône Play Store dans le coin!
3 - Je ne suis pas sûr que toutes ces commandes soient nécessaires, et peut-être que certaines d'entre elles sont exagérées... il semble de travail - qui est ce qui compte. :)
maintenant il n'y a plus besoin de charger de côté des paquets d'exécuter des scripts pour obtenir le Play Store sur l'émulateur. À partir de Android Studio 2.4 maintenant, vous pouvez créer un AVD qui a Play Store pré-installé sur elle. Actuellement, il n'est pris en charge que sur les images du système AVDS sous Android 7.0 (API 24).
Note: les périphériques compatibles sont signalés par la nouvelle colonne Play Store.
souhaité commenter la dernière réponse, mais sans connexion, il est seulement possible de faire une réponse:
Pour se débarrasser de la "lecture seule erreur" juste arrêter l'appareil immédiatement après qu'il est prêt. Mon script se présente comme suit:
#!/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
passer à http://opengapps.org / et télécharger la version pico de votre plate-forme et la version android. Décompresser le dossier téléchargé pour obtenir
1. GmsCore.apk
2. Googleservicesfram framework.apk
3. GoogleLoginService.apk
4. Phonesky.apk
localisez votre émulateur.EXE. Vous le trouverez probablement dans
C:\Users\ < YOUR_USER_NAME>\AppData\Local\Android\sdk\tools
Exécuter la commande:
l'émulateur avd
Note: utiliser-writable-system pour démarrer votre émulateur avec l'image système writable.
alors,
ADB root
adb remount
ADB push
ADB push < PATH_TO Googleservicesfram Framework.apk > / system / priv-app
ADB push
ADB push
ensuite, redémarrez l'émulateur
adb shell stop
adb shell de démarrage
pour vérifier l'exécution,
adb shell pm liste des paquets et vous trouverez com.Google.Android.gms package pour google
à partir de Maintenant, L'installation des APK dans le répertoire /system
semble fonctionner avec la commande adb push
.
un service caché refondait automatiquement le répertoire /system
en mode read-only
.
de N'importe quelle façon j'ai pu installer le magasin de jeu dans une machine virtuelle normale ( c.-à-d., Non-machine virtuelle de L'Api Google ) en montant simplement le fichier system.img
de mon OS et en copiant sur les fichiers.
# 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
les fichiers APK peuvent être extraits de n'importe quel appareil Android fonctionnant avec Googleapps en utilisant la commande adb pull
151990920"
[ pour obtenir le chemin exact des apks, nous pouvons utiliser la commande
pm list packages -f
à l'intérieur de la commande adb shell ]
voici le script que j'ai utilisé sur linux pour une instance Nexus 5 API 24 x86 sans 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
celui-ci l'a fait pour moi.
IMPORTANT: afin d'empêcher l'application de s'écraser, n'oubliez pas d'accorder à google play services les autorisations de localisation.
Configuration - > Apps - >Config (Gear icon) - >permissions de L'Application - >Location - >(en haut à droite menú)->Show system->Enable Google Play services
je veux juste ajouter une autre solution pour les utilisateurs natifs de React qui ont juste besoin de L'application Expo.
- installez le Expo app
- Ouvrir projet
- Click Device - > Open sur Android-dans cette étape Expo installera l'application Android expo et vous serez en mesure de l'ouvrir.