Sim*_*mon 88 android android-emulator android-studio
我从最新版本的Android Studio AVD中选择了这个模拟器.
我选择了最新版本的Android API 23.因为它说"使用Google API",我认为它实际上会包含所有Google应用程序,包括Play商店,以便我可以安装像Facebook这样的应用程序.
我看到的SO其他线程这似乎现在已经过时(如何安装谷歌Play应用程序在Android Studio中模拟器?),这个人给了安装基于通用包谷歌应用程序的指令,但只到Android 4.3的API 18:http://wiki.rootzwiki.com/Google_Apps#Universal_Packages_2
我想要API 23的那个.有没有办法在模拟器上安装Google Apps包?
看起来很奇怪,官方的Android模拟器并没有首先标准所有的谷歌应用程序...这似乎不支持谷歌,并可能意味着开发人员将不得不购买实际的设备来开发API 23 ?
And*_*ard 53
我最近必须在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
Run Code Online (Sandbox Code Playgroud)
要安装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 ./
Run Code Online (Sandbox Code Playgroud)
将APK推送到模拟器
提取我们的APK后,让我们使用以下命令启动我们的AVD.
[pyoor@localhost tools]$ ./emulator @<YOUR_DEVICE_NAME> -no-boot-anim
Run Code Online (Sandbox Code Playgroud)
创建AVD时,这可能需要几分钟时间.一旦启动,我们需要将AVD系统分区重新安装为读/写,以便我们可以将我们的包推送到设备上.
[pyoor@localhost]$ cd ~/android-sdk/platform-tools/
[pyoor@localhost platform-tools]$ ./adb remount
Run Code Online (Sandbox Code Playgroud)
接下来,将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
Run Code Online (Sandbox Code Playgroud)
利润!
最后,使用以下命令重新启动emualator:
[pyoor@localhost platform-tools]$ ./adb shell stop && ./adb shell start
Run Code Online (Sandbox Code Playgroud)
模拟器重新启动后,我们应该会在菜单启动器中看到Google Play包.将Google帐户与此AVD相关联后,我们现在可以在我们的模拟器下运行完整版Google Play.
Dev*_*-iL 48
以下是适用于API 23-25仿真器的方法.解释是针对API 24提供的,但对于其他版本几乎完全相同.
为读者提供热情的建议:请按照以下步骤进行操作,因为有些是通过提供的脚本自动完成的.
在Android studio的AVD管理器(在v2.2.3上测试)中,使用"Android 7.0(Google API)"目标创建一个新的模拟器:

下载适用于仿真器架构(CPU/ABI)的最新Open GApps软件包.在我的情况下它是x86_64,但它可能是其他东西取决于您在设备创建向导期间选择的图像.有趣的是,该架构似乎比正确的Android版本更重要(即6.0的gapps也适用于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\
Run Code Online (Sandbox Code Playgroud)
请注意,打开GAPPS使用Lzip压缩,其就可以利用Lzip网站上找到的工具打开1,2使用自制软件,或在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
Run Code Online (Sandbox Code Playgroud)
更新su二进制文件,以便能够修改我们稍后上传的文件的权限.su可以通过Chainfire软件包"Recovery zipflashable "在SuperSU中找到新的二进制文件.获取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
Run Code Online (Sandbox Code Playgroud)将所有.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
Run Code Online (Sandbox Code Playgroud)
请注意,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
Run Code Online (Sandbox Code Playgroud)当模拟器加载 - 关闭它时,删除虚拟设备,然后使用相同的系统映像创建另一个虚拟设备.这修复了无法响应的Play商店应用,"Google Play服务已停止"以及类似问题.它的工作原理,因为在前面的步骤中,我们实际上已经修改了系统图像本身(看看该修正的日期上android-sdk\system-images\android-24\google_apis\x86_64\system.img).这意味着从现在开始使用系统映像创建的每个设备都将安装gapps!
启动新的AVD.如果加载需要非常长的时间,请将其关闭,然后使用以下命令启动它:
START /B E:\...\android-sdk\tools\emulator.exe @Nexus_6_API_24
adb wait-for-device
adb shell "su --daemon &"
Run Code Online (Sandbox Code Playgroud)
AVD启动后,您将看到下面的图片 - 注意角落里的Play商店图标!
3 - 我不确定是否需要所有这些命令,也许其中一些是矫枉过正的...它似乎有效 - 这才是最重要的.:)
Pre*_*ola 39
现在没有必要侧面加载执行任何脚本的任何包来获得模拟器上的Play商店.从Android Studio 2.4开始,您现在可以创建一个预先安装了Play商店的AVD.目前,仅支持运行Android 7.0(API 24)系统映像的AVD.
注意:兼容设备由新的Play商店列表示.
小智 23
想对最后的答案发表评论,但没有登录,只能回答:
要摆脱"只读错误",只需在设备准备就绪后立即停止.我的脚本如下所示:
#!/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
Run Code Online (Sandbox Code Playgroud)
以简单的方式解决: 您应该创建一个新的模拟器,在第一次打开它之前,请按照以下 3 个简单的步骤操作:
1-转到“C:\Users[用户].android\avd[您的虚拟设备文件夹]”,使用记事本等文本编辑器打开“config.ini”
2-改变
“PlayStore.enabled = false” 到 “PlayStore.enabled = true”
3-改变
“mage.sysdir.1 = 系统映像\android-30\google_apis\x86”
到
“image.sysdir.1 = 系统图像\android-30\google_apis_playstore\x86”
| 归档时间: |
|
| 查看次数: |
95301 次 |
| 最近记录: |