J'ai sélectionné cet émulateur dans la dernière version d'Android Studio AVD.
J'ai sélectionné la dernière version d'Android API 23. Comme il est indiqué "avec les API Google", 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 sujets sur SO qui semblent être obsolètes à présent ( Comment installer l'application Google Play dans l'émulateur Android Studio? ) passe à l'API Android 4.3 18: http://wiki.rootzwiki.com/Google_Apps#Universal_Packages_2
Je voudrais celui pour l'API 23. Est-il possible d'installer le package Google Apps sur l'émulateur?
Il semble étrange que l'émulateur Android officiel ne vienne pas en standard avec toutes les applications Google. Cela ne semble pas très favorable à Google et cela voudrait dire que les développeurs devront acheter des appareils réels pour développer des API 23 ?
J'ai eu à faire cela récemment sur l'émulateur API 23 et j'ai suivi ce guide . Cela fonctionne pour l'émulateur API 23, vous ne devriez donc pas avoir de problème.
Remarque: tout le mérite revient à l'auteur de l'article de blog lié (pyoor). Je ne fais que l'afficher ici au cas où le lien serait rompu pour une raison quelconque.
....
Télécharger le package GAPPS
Ensuite, nous devons extraire le package Google Apps approprié qui correspond à notre version Android AVD. Dans ce cas, nous utiliserons le package 'gapps-lp-20141109-signed.Zip'. Vous pouvez télécharger ce fichier depuis BasketBuild ici .
[pyoor@localhost]$ md5sum gapps-lp-20141109-signed.Zip
367ce76d6b7772c92810720b8b0c931e gapps-lp-20141109-signed.Zip
Pour installer Google Play, nous devons envoyer les 4 fichiers APK suivants à notre AVD (situé dans ./system/priv-app/):
GmsCore.apk, GoogleServicesFramework.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 ./
Push APKs vers l'émulateur
Avec nos fichiers 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 des AVD en lecture/écriture afin de pouvoir envoyer nos packages sur le périphérique.
[pyoor@localhost]$ cd ~/Android-sdk/platform-tools/
[pyoor@localhost platform-tools]$ ./adb remount
Ensuite, envoyez les fichiers APK à 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émarrez l’émualateur à l’aide des commandes suivantes:
[pyoor@localhost platform-tools]$ ./adb Shell stop && ./adb Shell start
Une fois que l'émulateur a redémarré, le package Google Play devrait apparaître dans le lanceur de menus. Après avoir associé un compte Google à cet AVD, nous disposons maintenant d'une version entièrement fonctionnelle de Google Play fonctionnant sous notre émulateur.
Voici la méthode qui a fonctionné pour moi sur les émulateurs API 23-25 . L'explication est fournie pour l'API 24 mais fonctionne presque à l'identique pour les autres versions.
Crédits: Jon Doe , zaidorx , pjl .
Conseils chaleureux aux lecteurs: veuillez suivre les étapes avant de les suivre, car certaines sont automatisées à l'aide des scripts fournis.
Dans le gestionnaire AVD du studio Android (testé sur la version 2.2.3), créez un nouvel émulateur avec la cible "Android 7.0 (Google APIs)":
Téléchargez le dernier package Open GApps pour l'architecture de l'émulateur (CPU/ABI). Dans mon cas, il s'agissait de x86_64
, mais cela peut être différent en fonction de votre choix d'image lors de l'assistant de création de périphérique. Fait intéressant, l’architecture semble plus importante que la version Android correcte (c’est-à-dire que gapps for 6.0 fonctionne également sur un émulateur 7.0).
Extrayez les fichiers .apk
en utilisant l’un des chemins suivants (par rapport à 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 Open GApps utilise la compression Lzip, qui peut être ouverte à l'aide de l'outil disponible sur le site Web Lzip.1 , 2, ou sur Mac en utilisant homebrew: brew install lzip
. Alors par exemple lzip -d gmscore-x86_64.tar.lz
.
Je fournis un fichier batch qui utilise 7z.exe
et lzip.exe
pour extraire automatiquement tous les .apk
s requis (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 cela, enregistrez le script dans un fichier (par exemple, unzip_gapps.bat
) et mettez tout ce qui est pertinent dans un seul dossier, comme indiqué ci-dessous:
Mettez à jour le binaire su
pour pouvoir modifier les autorisations des fichiers que nous téléchargerons plus tard. Un nouveau binaire su
peut être trouvé dans le package SuperSU de Chainfire"Récupération flashable" Zip
. Obtenez le fichier Zip, extrayez-le quelque part, créez le fichier de commandes avec le contenu suivant dans le même dossier, puis exécutez-le:
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
Placez tous les fichiers .apk
dans un seul dossier et créez un fichier de commandes avec ce contenu.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 de commandes ci-dessus (la console devrait ressembler à ceci par la suite):
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
Lorsque l'émulateur se charge - fermez-le, supprimez le périphérique virtuel, puis créez-en un autre en utilisant la même image système. Cela corrige l'application Play Store qui ne répond pas, "Les services Google Play s'est arrêtée" et des problèmes similaires. Cela fonctionne car dans les étapes précédentes nous avons en fait modifié l'image système elle-même (jetez un coup d'œil à la Date de modification sur Android-sdk\system-images\Android-24\google_apis\x86_64\system.img
). Cela signifie que gapps sera installé sur tous les appareils créés à partir de cette image système!
Démarrer le nouveau AVD. Si le chargement est long, fermez-le et démarrez-le à l'aide de:
START /B E:\...\Android-sdk\tools\emulator.exe @Nexus_6_API_24
adb wait-for-device
adb Shell "su --daemon &"
Après le démarrage de l'AVD, vous verrez l'image ci-dessous - remarquez l'icône Play Store dans le coin!
3 - Je ne suis pas sûr que toutes ces commandes soient nécessaires, et certaines d'entre elles sont peut-être excessives ... cela semble fonctionner - c'est ce qui compte. :)
Désormais, il n’est plus nécessaire de charger latéralement des packages d’exécution de scripts pour obtenir le Play Store sur l’émulateur. Depuis Android Studio 2.4, vous pouvez maintenant créer un fichier AVD sur lequel Play Store est pré-installé. Actuellement, il n'est pris en charge que sur les AVD exécutant des images système Android 7.0 (API 24).
Remarque: Les appareils compatibles sont signalés par la nouvelle colonne Play Store.
Je voulais commenter la dernière réponse, mais sans login, il est seulement possible de répondre:
Pour vous débarrasser de "l'erreur de lecture seule", arrêtez simplement l'appareil dè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
Allez sur http://opengapps.org/ et téléchargez la version pico de votre plate-forme et la version Android. Décompressez le dossier téléchargé pour obtenir
1. GmsCore.apk
2. GoogleServicesFramework.apk
3. GoogleLoginService.apk
4. Phonesky.apk
Ensuite, localisez votre emulator.exe. Vous le trouverez probablement dans
C:\Utilisateurs\<VOTRE_NOM_USER>\AppData\Local\Android\sdk\outils
Exécutez la commande:
emulator -avd <YOUR_EMULATOR'S_NAME> -netdelay none -netspeed full -no-boot-anim -writable-system
Remarque: Utilisez -writable-system pour démarrer votre émulateur avec une image système inscriptible.
Ensuite,
adb root
adb remount
adb Push <PATH_TO GmsCore.apk>/system/priv-app
adb Push <PATH_TO GoogleServicesFramework.apk>/system/priv-app}
adb Push <PATH_TO GoogleLoginService.apk>/system/priv-app
adb Push <PATH_TO Phonesky.apk>/system/priv-app
Ensuite, redémarrez l'émulateur
arrêt du shell adb
début du shell adb
Pour vérifier l'exécution,
packages de liste pm du shell adb et vous trouverez le package com.google.Android.gms pour Google
À partir de maintenant, l'installation des apks dans le répertoire /system
semble fonctionner avec la commande adb Push
.
Certains services cachés remontaient automatiquement le répertoire /system
en mode read-only
.
De toute façon, j'ai pu installer le Play Store sur une machine virtuelle normale (c'est-à-dire une machine virtuelle non Google Api) en montant simplement le fichier system.img
à partir de mon système d'exploitation et en copiant ces 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 tout appareil Android exécutant Google Apps à l'aide de la commande adb pull
.
[Pour obtenir le chemin exact des apks, nous pouvons utiliser la commande pm list packages -f
dans le shell adb]
Voici le script que j'ai utilisé sur Linux pour une instance API Nexus 5 24 x86SANSGoogleApis.
#!/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: pour éviter le blocage de l'application, n'oubliez pas d'octroyer des autorisations de localisation pour les services Google Play.
Configuration-> Applications-> Config (icône d'engrenage) -> Autorisations d'application -> Emplacement -> (Menu en haut à droite) -> Afficher le système-> Activer les services Google Play
Je veux juste ajouter une autre solution pour les utilisateurs natifs de React qui ont juste besoin de l'application Expo.