Wybrałem ten emulator z najnowszej wersji Android Studio AVD.
Wybrałem najnowszą wersję Android API 23. Ponieważ jest napisane „z interfejsami API Google”, pomyślałem, że będzie zawierał wszystkie aplikacje Google, w tym Sklep Play, dzięki czemu będę mógł instalować aplikacje takie jak Facebook.
Widziałem inne wątki na SO, które wydają się być teraz nieaktualne ( Jak zainstalować aplikację Google Play w emulatorze Android Studio? ), Ten zawiera instrukcje dotyczące instalowania aplikacji Google w oparciu o uniwersalne pakiety, ale dotyczy tylko Androida 4.3 API 18: http://wiki.rootzwiki.com/Google_Apps#Universal_Packages_2
Chciałbym ten dla API 23. Czy jest sposób na zainstalowanie pakietu Google Apps na emulatorze?
Wydaje się dziwne, że oficjalny emulator Androida nie jest standardem we wszystkich aplikacjach Google w pierwszej kolejności ... Nie wydaje się to zbytnio wspierać google i może oznaczać, że programiści będą musieli kupować rzeczywiste urządzenia, aby tworzyć dla API 23 ?
Odpowiedzi:
Musiałem to zrobić ostatnio na emulatorze API 23 i postępowałem zgodnie z tym przewodnikiem . Działa dla emulatora API 23, więc nie powinieneś mieć problemu.
Uwaga: wszystkie zasługi należą do autora powiązanego posta na blogu (pyoor). Po prostu zamieszczam to tutaj na wypadek, gdyby link z jakiegoś powodu został zerwany.
....
Pobierz pakiet GAPPS
Następnie musimy pobrać odpowiedni pakiet Google Apps, który pasuje do naszej wersji AVD dla systemu Android. W tym przypadku będziemy używać pakietu „gapps-lp-20141109-signed.zip”. Możesz pobrać ten plik z BasketBuild tutaj .
[pyoor@localhost]$ md5sum gapps-lp-20141109-signed.zip 367ce76d6b7772c92810720b8b0c931e gapps-lp-20141109-signed.zip
Aby zainstalować Google Play, musimy przesłać następujące 4 pliki APK do naszego AVD (zlokalizowanego w ./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 ./
Wypchnij pliki APK do emulatora
Po wyodrębnieniu naszych plików APK uruchommy nasz AVD za pomocą następującego polecenia.
[pyoor@localhost tools]$ ./emulator @<YOUR_DEVICE_NAME> -no-boot-anim
Przy pierwszym utworzeniu AVD może to zająć kilka minut. Po uruchomieniu musimy ponownie zamontować partycję systemową AVD jako do odczytu / zapisu, abyśmy mogli przesłać nasze pakiety na urządzenie.
[pyoor@localhost]$ cd ~/android-sdk/platform-tools/ [pyoor@localhost platform-tools]$ ./adb remount
Następnie prześlij pakiety APK do naszego 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
Zysk!
Na koniec uruchom ponownie emualator, używając następujących poleceń:
Po ponownym uruchomieniu emulatora powinniśmy zobaczyć pakiet Google Play pojawiający się w programie uruchamiającym menu. Po powiązaniu konta Google z tym AVD mamy teraz w pełni działającą wersję Google Play działającą pod naszym emulatorem.
źródło
Poniżej znajduje się metoda, która działała dla mnie na emulatorach API 23-25 . Wyjaśnienie dotyczy API 24, ale działa prawie identycznie w innych wersjach.
Kredyty : Jon Doe , zaidorx , pjl .
W menedżerze AVD studia Android (testowany na wersji 2.2.3) utwórz nowy emulator z celem „Android 7.0 (API Google API)”:
Pobierz najnowszy pakiet Open GApps dla architektury emulatora (CPU / ABI). W moim przypadku tak
x86_64
, ale może to być coś innego w zależności od wyboru obrazu podczas kreatora tworzenia urządzenia. Co ciekawe, architektura wydaje się ważniejsza niż poprawna wersja Androida (tj. Gapps dla 6.0 działa również na emulatorze 7.0).Wyodrębnij
.apk
pliki, używając następujących ścieżek (względemopen_gapps-x86_64-7.0-pico-201#####.zip
):Zauważ, że Otwarte GApps używać kompresji Lzip, które mogą być otwierane za pomocą albo narzędzie znajduje się na stronie internetowej Lzip 1 , 2 , lub Mac za pomocą homebrew:
brew install lzip
. Wtedy nplzip -d gmscore-x86_64.tar.lz
.Dostarczam plik wsadowy, który wykorzystuje
7z.exe
ilzip.exe
wyodrębnia wszystkie wymagane pliki.apk
automatycznie (w systemie Windows):Aby z tego skorzystać, zapisz skrypt w pliku (np.
unzip_gapps.bat
) I umieść wszystko, co istotne, w jednym folderze, jak pokazano poniżej:Zaktualizuj
su
plik binarny, aby móc modyfikować uprawnienia plików, które później załadujemy. Nowasu
binarny można znaleźć w SuperSU przez Chainfire pakietu „odzysk flashable”zip
. Pobierz plik zip, wyodrębnij go gdzieś, utwórz plik wsadowy z następującą zawartością w tym samym folderze i na koniec uruchom go:Umieść wszystkie
.apk
pliki w jednym folderze i utwórz plik wsadowy o następującej zawartości 3 :Zwróć uwagę, że ścieżka
E:\...\android-sdk\tools\emulator.exe
powinna zostać zmodyfikowana zgodnie z lokalizacją zestawu SDK systemu Android w systemie.Uruchom powyższy plik wsadowy (konsola powinna wyglądać później tak):
Po załadowaniu emulatora - zamknij go, usuń urządzenie wirtualne, a następnie utwórz kolejne, korzystając z tego samego obrazu systemu . Rozwiązuje to nieodpowiadającą aplikację Sklep Play, „Usługi Google Play zostały zatrzymane” i podobne problemy. Działa, ponieważ we wcześniejszych krokach faktycznie zmodyfikowaliśmy sam obraz systemu (spójrz na datę modyfikacji w dniu
android-sdk\system-images\android-24\google_apis\x86_64\system.img
). Oznacza to, że każde urządzenie utworzone odtąd za pomocą obrazu systemu będzie miało zainstalowane GAPPS!Uruchom nowy AVD. Jeśli ładowanie trwa niezwykle długo, zamknij go i zamiast tego uruchom za pomocą:
Po uruchomieniu AVD zobaczysz poniższy obrazek - zwróć uwagę na ikonę Sklepu Play w rogu!
3 - Nie jestem pewien, czy wszystkie te polecenia są potrzebne, a być może niektóre z nich są przesadzone ... wydaje się, że działa - i to się liczy. :)
źródło
/system/app/SdkSetup.apk
nie istniało na moim obrazie. Wielkie dzięki, szalałem, próbując to rozwiązać!Teraz nie ma potrzeby ładowania żadnych pakietów z wykonywaniem jakichkolwiek skryptów, aby pobrać Sklep Play na emulatorze. Począwszy od Android Studio 2.4 możesz teraz utworzyć AVD z preinstalowanym Sklepem Play. Obecnie jest obsługiwany tylko w AVD z obrazami systemu Android 7.0 (API 24).
Oficjalne źródło
Uwaga: zgodne urządzenia są oznaczone w nowej kolumnie Sklep Play.
źródło
Android 7.0 (Google Play)
nie tylko interfejsy API Google. Obecnie jest dostępny tylko dla API 24, a nie dla API 25. Po zainstalowaniu obrazu systemu pojawi się on na karcie Zalecane, a nie na karcie Obrazy x86.Chciałem skomentować ostatnią odpowiedź, ale bez logowania można tylko odpowiedzieć:
Aby pozbyć się błędu „tylko do odczytu”, po prostu zatrzymaj urządzenie natychmiast po jego przygotowaniu. Mój skrypt wygląda następująco:
#!/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
źródło
adb root
wiersz należy dodać bezpośrednio poadb wait-for-device
wierszu, aby zapobiecRead-only file system
błędom.Musisz zaktualizować
config.ini
plik dla urządzenia i ponownie pobrać obraz systemu.Zaktualizuj następujące wartości w
C:\Users\USER\.android\avd\DEVICE_ID\config.ini
(w systemie Windows) lub~/.android/avd/DEVICE_ID/config.ini
(w systemie Linux)PlayStore.enabled = true image.sysdir.1=system-images\android-27\google_apis_playstore\x86\ tag.display=Google Play tag.id=google_apis_playstore
Następnie ponownie pobierz obraz systemu dla urządzenia z Android Studio> Narzędzia> Menedżer AVD
To wszystko. Uruchom ponownie urządzenie, a będziesz mieć zainstalowany Sklep Play.
Na to również odpowiedziano tutaj: Jak zainstalować aplikację Google Play w emulatorze Android Studio?
źródło
Rozwiązany w prosty sposób: Powinieneś utworzyć nowy emulator, przed otwarciem go po raz pierwszy wykonaj 3 proste kroki:
1- przejdź do „C: \ Users [użytkownik] .android \ avd [folder urządzenia wirtualnego]” otwórz „config.ini” za pomocą edytora tekstu, takiego jak notatnik
2- zmiana
„PlayStore.enabled = false” na „PlayStore.enabled = true”
3- zmiana
„mage.sysdir.1 = obrazy-systemu \ android-30 \ google_apis \ x86”
do
„image.sysdir.1 = obrazy-systemu \ android-30 \ google_apis_playstore \ x86”
źródło
google_apis_playstore
obraz był obecny, ale nie było w moim przypadku. Więc musiałem go zainstalować zgodnie@Aamnah
z odpowiedzią.google_apis_playstore
obrazu razem z nim idk why ..Oto skrypt, którego użyłem w systemie Linux dla instancji Nexus 5 API 24 x86 BEZ 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
Ten zrobił to dla mnie.
WAŻNE: aby zatrzymać awarię aplikacji, pamiętaj o przyznaniu usługom Google Play uprawnień do lokalizacji.
Konfiguracja -> Aplikacje -> Konfiguracja (ikona koła zębatego) -> Uprawnienia aplikacji -> Lokalizacja -> (menu w prawym górnym rogu) -> Pokaż system -> Włącz usługi Google Play
źródło
Wejdź na http://opengapps.org/ i pobierz wersję Pico swojej platformy i wersję Androida. Rozpakuj pobrany folder, aby uzyskać
1. GmsCore.apk
2. GoogleServicesFramework.apk
3. GoogleLoginService.apk
4. Phonesky.apk
Następnie zlokalizuj plik emulator.exe. Prawdopodobnie znajdziesz go w
C: \ Users \ <YOUR_USER_NAME> \ AppData \ Local \ Android \ sdk \ tools
Uruchom polecenie:
emulator -avd <NAZWA_EMULATORA TWOJEGO> -netdelay none -netspeed full -no-boot-anim -writable-system
Uwaga: Użyj -writable-system, aby uruchomić emulator z zapisywalnym obrazem systemu.
Następnie
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
Następnie uruchom ponownie emulator
adb shell stop
adb shell start
Aby zweryfikować działanie, wyświetl
listę pakietów powłoki adb shell pm, a znajdziesz pakiet com.google.android.gms dla google
źródło
W tej chwili
/system
wydaje się , że instalowanie apek w katalogu działa za pomocąadb push
polecenia.Niektóre usługi ukryte automatycznie ponownie podłączały
/system
katalog wread-only
trybie.W każdym razie mogłem zainstalować sklep Play na normalnej maszynie wirtualnej (tj. Wirtualnej maszynie innej niż Google-Api), po prostu montując
system.img
plik z mojego systemu operacyjnego i kopiując pliki.# 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
Pliki APK można pobrać z dowolnego prawdziwego urządzenia z systemem Android, na którym działa Google Apps, za pomocą
adb pull
polecenia[Aby uzyskać dokładną ścieżkę do apek, możemy użyć polecenia
pm list packages -f
wewnątrz powłoki adb]źródło
apk
na istnienie kilku kopii w/system
katalogu. Zauważyłem, że umieszczenie każdego z nichapk
we właściwym folderze nie powoduje błędów zapisu. Zaktualizowałem moją odpowiedź - czy możesz spróbować, czy teraz zadziała?Chcę tylko dodać kolejne rozwiązanie dla użytkowników React Native, którzy potrzebują tylko aplikacji Expo.
źródło