Android Studio 에뮬레이터는 API 23 용 Play 스토어와 함께 제공되지 않습니다.
최신 버전의 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 GApps는 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 스토어 열로 표시됩니다.
마지막 답변에 대해 댓글을 달고 싶었지만 로그인하지 않으면 답변 만 할 수 있습니다.
To get rid of the "read only error" just stop the device immediately after it’s ready. My script looks as follows:
#!/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
Go to http://opengapps.org/ and download the pico version of your platform and android version. Unzip the downloaded folder to get
1. GmsCore.apk
2. GoogleServicesFramework.apk
3. GoogleLoginService.apk
4. Phonesky.apk
Then, locate your emulator.exe. You will probably find it in
C:\Users\<YOUR_USER_NAME>\AppData\Local\Android\sdk\tools
Run the command:
emulator -avd <YOUR_EMULATOR'S_NAME> -netdelay none -netspeed full -no-boot-anim -writable-system
Note: Use -writable-system to start your emulator with writable system image.
Then,
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
Then, reboot the emulator
adb shell stop
adb shell start
To verify run,
adb shell pm list packages and you will find com.google.android.gms package for google
As of now, Installing the apks to the /system
directory seems to be working using adb push
command.
Some hidden service was automatically remounting the /system
directory in read-only
mode.
Any way I was able to install the Play store in a normal virtual-machine ( Ie, non-Google-Api virtual machine ) by simply mounting the system.img
file from my OS and by copying over the files.
# 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
The APK files can be pulled from any real Android device running Google Apps by using adb pull
command
[ To get the exact path of the apks, we can use command pm list packages -f
inside the adb shell ]
Here's the script i used on linux for an instance Nexus 5 API 24 x86 WITHOUT 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
This one did it for me.
IMPORTANT: in order to stop the app from crashing remember to grant google play services location permissions.
Configuration->Apps->Config(Gear icon)->App permissions->Location->(Top right menú)->Show system->Enable Google Play services
Expo 앱만 필요한 React Native 사용자를위한 또 다른 솔루션을 추가하고 싶습니다.
- Expo 앱 설치
- 프로젝트 열기
- 장치-> Android에서 열기를 클릭합니다.이 단계에서 Expo는 expo Android 앱을 설치하고 열 수 있습니다.
'IT박스' 카테고리의 다른 글
kwargs 목록을 전달 하시겠습니까? (0) | 2020.09.14 |
---|---|
Google App Engine 모델의 JSON 직렬화 (0) | 2020.09.14 |
Python에서 Twitter에 대한 감정 분석 (0) | 2020.09.14 |
스탠포드 파서 및 NLTK (0) | 2020.09.13 |
Sublime Text 3에서 BOM을 사용하여 파일 인코딩을 UTF8로 설정 (0) | 2020.09.13 |