최신 버전의 Android Studio AVD에서이 에뮬레이터를 선택했습니다.
Android API 23의 최신 버전을 선택했습니다. “with Google APIs”라고되어 있기 때문에 실제로 Facebook과 같은 앱을 설치할 수 있도록 Play Store를 포함한 모든 Google 앱을 포함 할 것이라고 생각했습니다.
나는 지금 구식 인 것처럼 보이는 다른 스레드를 보았습니다 ( Android Studio 에뮬레이터에 Google Play 앱을 설치하는 방법? ), 이것은 범용 패키지를 기반으로 Google 앱을 설치하는 지침을 제공하지만 Android 4.3 API 18까지만 올라갑니다. http://wiki.rootzwiki.com/Google_Apps#Universal_Packages_2
API 23 용으로 만들고 싶습니다. 에뮬레이터에 Google Apps 패키지를 설치하는 방법이 있습니까?
공식 안드로이드 에뮬레이터가 처음에 모든 구글 앱에 표준으로 제공되지 않는다는 것이 이상해 보입니다 … 이것은 구글을별로 지원하지 않는 것 같고 잠재적으로 개발자가 API 23 용으로 개발하기 위해 실제 장치를 구입해야한다는 것을 의미합니다. ?
답변
최근에 API 23 에뮬레이터에서이 작업을 수행해야했으며이 가이드를 따랐습니다 . API 23 에뮬레이터에서 작동하므로 문제가 없어야합니다.
참고 : 모든 크레딧은 링크 된 블로그 게시물 (pyoor)의 작성자에게 있습니다. 어떤 이유로 든 링크가 끊어지는 경우를 대비하여 여기에 게시하고 있습니다.
….
GAPPS 패키지 다운로드
다음으로 Android AVD 버전과 일치하는 적절한 Google Apps 패키지를 가져와야합니다. 이 경우 ‘gapps-lp-20141109-signed.zip’패키지를 사용합니다. 여기 BasketBuild 에서 해당 파일을 다운로드 할 수 있습니다 .
[pyoor@localhost]$ 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
[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 ./
에뮬레이터에 APK 푸시
APK를 추출한 후 다음 명령을 사용하여 AVD를 시작하겠습니다.
[pyoor@localhost tools]$ ./emulator @<YOUR_DEVICE_NAME> -no-boot-anim
AVD가 생성 될 때 처음에는 몇 분 정도 걸릴 수 있습니다. 시작되면 패키지를 장치에 푸시 할 수 있도록 AVD 시스템 파티션을 읽기 / 쓰기로 다시 마운트해야합니다.
[pyoor@localhost]$ cd ~/android-sdk/platform-tools/
[pyoor@localhost platform-tools]$ ./adb remount
다음으로 APK를 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
이익!
마지막으로 다음 명령을 사용하여 에뮬레이터를 재부팅합니다.
[pyoor@localhost platform-tools]$ ./adb shell stop && ./adb shell start
에뮬레이터가 다시 시작되면 메뉴 실행기에 Google Play 패키지가 표시됩니다. Google 계정을이 AVD와 연결하면 이제 에뮬레이터에서 완전히 작동하는 Google Play 버전이 실행됩니다.
답변
아래는 API 23-25 에뮬레이터 에서 나를 위해 일한 방법입니다 . API 24에 대한 설명이 제공되지만 다른 버전에서도 거의 동일하게 작동합니다.
크레딧 : Jon Doe , zaidorx , pjl .
독자를위한 따뜻한 조언 : 일부는 제공된 스크립트를 통해 자동화되므로 단계를 따르기 전에 단계를 살펴 보시기 바랍니다.
-
Android 스튜디오의 AVD 관리자 (v2.2.3에서 테스트 됨)에서 ‘Android 7.0 (Google API)’대상으로 새 에뮬레이터를 만듭니다.
-
에뮬레이터 아키텍처 (CPU / ABI) 용 최신 Open GApps 패키지를 다운로드합니다 . 제 경우에는
x86_64
였지만 장치 생성 마법사 중에 선택한 이미지에 따라 다른 것일 수 있습니다. 흥미롭게도 아키텍처는 올바른 Android 버전보다 더 중요해 보입니다 (즉, 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 GApp은 Lzip 웹 사이트 1 , 2 에있는 도구를 사용하여 열 수있는 Lzip 압축을 사용하거나 homebrew :를 사용하여 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
이를 사용하려면 스크립트를 파일 (예 :)에 저장하고
unzip_gapps.bat
아래에 설명 된대로 관련된 모든 항목을 하나의 폴더에 넣습니다.
-
su
나중에 업로드 할 파일의 권한을 수정할 수 있도록 바이너리를 업데이트하십시오 . 새로운su
바이너리는 SuperSU by Chainfire 패키지 “Recovery 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 스토어 앱, ‘Google Play 서비스가 중지되었습니다’및 이와 유사한 문제가 해결됩니다. 이전 단계에서 우리가 실제로 있기 때문에 그것은 작동 시스템 이미지 자체를 수정 합니다 (한 번 봐 걸릴 수정 날짜 에를
android-sdk\system-images\android-24\google_apis\x86_64\system.img
). 즉, 지금부터 시스템 이미지로 생성 된 모든 장치에는 간격이 설치됩니다! -
새 AVD를 시작합니다. 로드하는 데 비정상적으로 오래 걸리는 경우 닫고 대신 다음을 사용하여 시작하십시오.
START /B E:\...\android-sdk\tools\emulator.exe @Nexus_6_API_24 adb wait-for-device adb shell "su --daemon &"
AVD가 시작되면 아래 이미지가 표시됩니다. 모서리에있는 Play 스토어 아이콘을 확인하세요.
3- 이 모든 명령이 필요한지 확신 할 수 없으며 일부 명령은 과도합니다. 작동하는 것 같습니다. 그게 중요합니다. 🙂
답변
이제 에뮬레이터에서 Play 스토어를 가져 오기 위해 스크립트를 실행하는 패키지를 사이드로드 할 필요가 없습니다. 이제 Android Studio 2.4부터 Play 스토어가 사전 설치된 AVD를 만들 수 있습니다. 현재 Android 7.0 (API 24) 시스템 이미지를 실행하는 AVD에서만 지원됩니다.
참고 : 호환되는 기기는 새로운 Play 스토어 열로 표시됩니다.
답변
마지막 답변에 대해 댓글을 달고 싶었지만 로그인 없이는 답변 만 할 수 있습니다.
“읽기 전용 오류”를 제거하려면 준비가 완료된 후 즉시 장치를 중지하십시오. 내 스크립트는 다음과 같습니다.
#!/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
답변
해야 할 일은 config.ini
장치 의 파일을 업데이트 하고 시스템 이미지를 다시 다운로드하는 것입니다.
C:\Users\USER\.android\avd\DEVICE_ID\config.ini
(Windows) 또는 ~/.android/avd/DEVICE_ID/config.ini
(Linux) 에서 다음 값을 업데이트하십시오.
PlayStore.enabled = true
image.sysdir.1=system-images\android-27\google_apis_playstore\x86\
tag.display=Google Play
tag.id=google_apis_playstore
그런 다음 Android 스튜디오> 도구> AVD 관리자 에서 기기의 시스템 이미지를 다시 다운로드합니다.
그게 다입니다. 기기를 다시 시작하면 Play 스토어가 설치됩니다.
이것은 또한 여기에서 답변되었습니다 : Android Studio 에뮬레이터에 Google Play 앱을 설치하는 방법?
답변
쉬운 방법으로 해결 :
처음으로 열기 전에 새 에뮬레이터를 만들어야합니다. 다음 3 단계를 따르세요.
1- “C : \ Users [user] .android \ avd [your virtual device folder] “로 이동 하여 메모장과 같은 텍스트 편집기로 “config.ini” 를 엽니 다.
2- 변경
“PlayStore.enabled = false”
–
“PlayStore.enabled = true”
3- 변경
“mage.sysdir.1 = system-images \ android-30 \ google_apis \ x86”
…에
“image.sysdir.1 = system-images \ android-30 \ google_apis_playstore \ x86”
답변
다음은 Linux에서 GoogleApis 없이 Nexus 5 API 24 x86 인스턴스를 위해 사용한 스크립트 입니다.
#!/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 서비스에 위치 권한을 부여해야합니다.
구성-> 앱-> 구성 (톱니 바퀴 아이콘)-> 앱 권한-> 위치-> (오른쪽 상단 메뉴)-> 시스템 표시-> Google Play 서비스 활성화