it-swarm.com.de

Der Android Studio-Emulator wird nicht mit Play Store für API 23 geliefert

Ich habe diesen Emulator aus der neuesten Version von Android Studio AVD ausgewählt.

 Google API

Ich habe die neueste Version von Android API 23 ausgewählt. Da "mit Google-APIs" angegeben wird, dachte ich, dass alle Google-Apps, einschließlich Play Store, eingeschlossen werden, damit ich Apps wie Facebook installieren kann.

Ich habe andere Threads auf SO gesehen, die jetzt veraltet zu sein scheinen ( Wie installiert man die Google Play-App im Android Studio-Emulator? ). Diese Anleitung enthält Anweisungen zum Installieren von Google-Apps, die auf Universalpaketen basieren, aber nur auf diesem geht bis zu Android 4.3 API 18: http://wiki.rootzwiki.com/Google_Apps#Universal_Packages_2

Ich hätte gerne eine für API 23. Gibt es eine Möglichkeit, das Google Apps-Paket auf dem Emulator zu installieren? 

Es ist seltsam, dass der offizielle Android-Emulator nicht standardmäßig mit allen Google-Apps geliefert wird. Dies scheint Google nicht sehr zu unterstützen und könnte bedeuten, dass Entwickler tatsächliche Geräte kaufen müssen, um sie für API 23 zu entwickeln ? 

82
Simon

Ich musste dies kürzlich mit dem API 23-Emulator tun und folgte diesem Leitfaden Es funktioniert mit dem API 23-Emulator, Sie sollten also kein Problem haben.

Hinweis: Alle Gutschriften gehen an den Autor des verlinkten Blogposts (pyoor). Ich poste es nur hier, falls der Link aus irgendeinem Grund bricht.

....

Laden Sie das GAPPS-Paket herunter

Als Nächstes müssen wir das entsprechende Google Apps-Paket herunterladen, das zu unserer Android AVD-Version passt. In diesem Fall verwenden wir das Paket 'gapps-lp-20141109-signed.Zip'. Sie können diese Datei von BasketBuild hier herunterladen.

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

Um Google Play zu installieren, müssen wir die folgenden 4 APKs auf unsere AVD (in ./system/priv-app/) verschieben:

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 ./

APKs auf den Emulator drücken

Nachdem unsere APKs extrahiert wurden, starten wir unsere AVD mit dem folgenden Befehl.

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

Dies kann beim ersten Erstellen des AVD einige Minuten dauern. Nach dem Start müssen wir die AVDs-Systempartition als Lese-/Schreibzugriff erneut bereitstellen, damit wir unsere Pakete auf das Gerät schieben können.

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

Als nächstes drücken Sie die APKs zu unserer 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

Gewinn!

Starten Sie schließlich den Emualator mit den folgenden Befehlen neu:

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

Nach dem Neustart des Emulators sollte das Google Play-Paket im Menü-Starter angezeigt werden. Nachdem wir dieser AVD ein Google-Konto zugeordnet haben, haben wir jetzt eine voll funktionsfähige Version von Google Play unter unserem Emulator.

50
Andy Shephard

Unten ist die Methode, die bei API 23-25 ​​ -Emulatoren funktioniert hat. Die Erklärung wird für API 24 bereitgestellt, funktioniert jedoch für andere Versionen nahezu identisch.

Credits: Jon Doe , zaidorx , pjl .

Warmer Hinweis für die Leser: Bitte gehen Sie die Schritte vorher durch, da einige über die bereitgestellten Skripts automatisiert werden.


  1. Erstellen Sie im AVD-Manager von Android Studio (getestet auf v2.2.3) einen neuen Emulator mit dem Ziel "Android 7.0 (Google APIs)":  AVD screen after creating the emulator.

  2. Laden Sie das neueste Open GApps - Paket für die Emulatorarchitektur (CPU/ABI) herunter. In meinem Fall war es x86_64, aber es kann auch etwas anderes sein, abhängig von Ihrer Wahl des Images während des Assistenten zur Geräteerstellung. Interessanterweise scheint die Architektur wichtiger zu sein als die korrekte Android-Version (d. H. Gapps für 6.0 funktionieren auch auf einem 7.0-Emulator). 

  3. Extrahieren Sie die .apk-Dateien aus den folgenden Pfaden (relativ zu 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\
    

    Beachten Sie, dass Open GApps die Lzip-Komprimierung verwenden, die mit einem der Tools auf der Lzip-Website geöffnet werden kann1 , 2oder auf einem Mac mit Homebrew: brew install lzip. Dann z.B. lzip -d gmscore-x86_64.tar.lz

    Ich stelle eine Batch-Datei bereit, die 7z.exe und lzip.exe verwendet, um alle erforderlichen .apks automatisch (unter Windows) zu extrahieren:

    @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
    

    Speichern Sie dazu das Skript in einer Datei (z. B. unzip_gapps.bat) und legen Sie alle relevanten Informationen in einem Ordner ab (siehe unten):  What it should look like...

  4. Aktualisieren Sie die su-Binärdatei, um die Berechtigungen der Dateien ändern zu können, die Sie später hochladen. Eine neue su-Binärdatei befindet sich im SuperSU by Chainfire-Paket "Recovery flashable" Zip . Holen Sie sich die Zip-Datei, extrahieren Sie sie irgendwo, erstellen Sie eine Stapeldatei mit folgendem Inhalt im selben Ordner und führen Sie sie schließlich aus:

    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
    
  5. Legen Sie alle .apk-Dateien in einem Ordner ab und erstellen Sie eine Batchdatei mit diesen Inhalten3:

    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
    

    Beachten Sie, dass der Pfad E:\...\Android-sdk\tools\emulator.exe entsprechend dem Speicherort des Android SDK auf Ihrem System geändert werden sollte.

  6. Führen Sie die obige Batchdatei aus (die Konsole sollte danach so aussehen):

    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
    
  7. Wenn der Emulator geladen wird - close it, löschen Sie das virtuelle Gerät und erstellen Sie ein weiteres mit demselben Systemabbild. Dies behebt die nicht mehr reagierende Play Store App, "Google Play Services wurde beendet" und ähnliche Probleme. Es funktioniert, weil wir in den vorherigen Schritten das System-Image selbst geändert haben (schauen Sie sich das Date modified on Android-sdk\system-images\Android-24\google_apis\x86_64\system.img an). Dies bedeutet, dass auf jedem Gerät, das ab sofort mit dem Systemabbild erstellt wird, GAPs installiert werden.

  8. Starten Sie die neue AVD. Wenn das Laden ungewöhnlich lange dauert, schließen Sie es und starten Sie es stattdessen mit:

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

    Nachdem die AVD gestartet ist, sehen Sie das Bild unten. Beachten Sie das Play Store-Symbol in der Ecke!

 First boot with Play Store installed.


3 - Ich bin nicht sicher, ob all diese Befehle benötigt werden, und vielleicht sind einige von ihnen übertrieben ... es scheint zu funktionieren - was zählt. :)

47
Dev-iL

Jetzt müssen Sie keine Pakete zum Ausführen von Skripts laden, um den Play Store in den Emulator zu laden. Ab Android Studio 2.4 können Sie jetzt eine AVD erstellen, auf der Play Store vorinstalliert ist. Derzeit wird es nur auf den AVDs unterstützt, die Systemabbilder mit Android 7.0 (API 24) ausführen.

Offizielle Quelle

 AVD with Play Store

Hinweis: Kompatible Geräte werden in der neuen Play Store-Spalte angezeigt.

37
Prerak Sola

Wollte die letzte Antwort kommentieren, aber ohne Login ist nur eine Antwort möglich:

Um den "Nur-Lese-Fehler" zu beseitigen, halten Sie das Gerät sofort an, sobald es fertig ist. Mein Skript sieht folgendermaßen aus:

#!/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
23
Jon Doe

Gehen Sie zu http://opengapps.org/ und laden Sie die Pico-Version Ihrer Plattform und Android Version. Entpacken Sie den heruntergeladenen Ordner, um zu erhalten
1. GmsCore.apk
2. GoogleServicesFramework.apk
3. GoogleLoginService.apk
4. Phonesky.apk

Suchen Sie dann Ihre emulator.exe. Sie werden es wahrscheinlich in finden
C:\Users\<IHR_BENUTZERNAME>\AppData\Local\Android\sdk\tools

Führen Sie den Befehl aus:
Emulator -avd <IHR_EMULATORNAME> -Netzverzögert keine -Netzgeschwindigkeit voll -no-Boot-Anim -beschreibbares-System

Hinweis: Verwenden Sie -writable-system, um Ihren Emulator mit einem beschreibbaren Systemimage zu starten.

Dann,
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

Starten Sie dann den Emulator neu
adb Shell stop
adb Shell start

Um den Lauf zu überprüfen,
adb Shell pm list packages und Sie finden com.google.Android.gms Paket für Google

2
Saini Arun

Ab jetzt scheint die Installation der apks im Verzeichnis /system mit dem Befehl adb Push zu funktionieren. 

Einige verborgene Dienste meldeten das /system-Verzeichnis automatisch im read-only-Modus.

Auf jede Art und Weise konnte ich den Play Store auf einer normalen virtuellen Maschine (z. B. einer virtuellen Maschine von Google-Api) installieren, indem ich einfach die system.img-Datei von meinem Betriebssystem aus anhänge und die Dateien kopiere.

# 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

Die APK-Dateien können von jedem echten Android-Gerät abgerufen werden, auf dem Google Apps ausgeführt wird. Verwenden Sie dazu den Befehl adb pull 

[Um den genauen Pfad der apks zu ermitteln, können Sie den Befehl pm list packages -f in der Adb-Shell verwenden.]

1
harish2704

Hier ist das Skript, das ich unter Linux für eine Instanz von Nexus 5 API 24 x86OHNEGoogleApis verwendet habe.

#!/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

Dieser hat es für mich getan.

WICHTIG: Um den Absturz der App zu verhindern, müssen Sie die Berechtigung für den Standort von Google Play-Diensten erteilen. 

Konfiguration -> Anwendungen -> Konfigurieren (Zahnradsymbol) -> Anwendungsberechtigungen -> Standort -> (Menü oben rechts) -> System anzeigen -> Google Play-Dienste aktivieren

1
Richard

Sie möchten einfach eine weitere Lösung für Benutzer von React Native hinzufügen, die nur die Expo-App benötigen.

  1. Installieren Sie die Expo App
  2. Öffnen Sie Ihr Projekt
  3. Klicken Sie auf Gerät -> Auf Android öffnen - In dieser Phase wird Expo die Android-App expo installieren und Sie können sie öffnen.
0
chenop