当前位置:  开发笔记 > 编程语言 > 正文

Android Studio模拟器不附带Play Store for API 23

如何解决《AndroidStudio模拟器不附带PlayStoreforAPI23》经验,为你挑选了4个好方法。

我从最新版本的Android Studio AVD中选择了这个模拟器.

Google API

我选择了最新版本的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 ?



1> Andy Shephar..:

我最近必须在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 @ -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

利润!

最后,使用以下命令重新启动emualator:

[pyoor@localhost platform-tools]$ ./adb shell stop && ./adb shell start

模拟器重新启动后,我们应该会在菜单启动器中看到Google Play包.将Google帐户与此AVD相关联后,我们现在可以在我们的模拟器下运行完整版Google Play.


我收到"ReadOnly文件系统"错误,并没有安装这些apk文件.
不幸的是,BasketBuild似乎不再可用.https://s.basketbuild.com/表示自至少9/3以来它已经下降,没有ETA可以启动.您是否为Google应用推荐了其他来源?
所有链接都已死亡
不适用于android studio 2.0

2> Dev-iL..:

以下是适用于API 23-25仿真器的方法.解释是针对API 24提供的,但对于其他版本几乎完全相同.

致谢:Jon Doe,zaidorx,pjl.

为读者提供热情的建议:请按照以下步骤进行操作,因为有些是通过提供的脚本自动完成的.


    在Android studio的AVD管理器(在v2.2.3上测试)中,使用"Android 7.0(Google API)"目标创建一个新的模拟器: 创建模拟器后的AVD屏幕.

    下载适用于仿真器架构(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\
    

    请注意,打开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
    

    要使用它,请将脚本保存在文件中(例如unzip_gapps.bat)并将所有相关内容放在一个文件夹中,如下所示: 应该是什么样子......

    更新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
    

    将所有.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).这意味着从现在开始使用系统映像创建的每个设备都将安装gapps!

    启动新的AVD.如果加载需要非常长的时间,请将其关闭,然后使用以下命令启动它:

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

    AVD启动后,您将看到下面的图片 - 注意角落里的Play商店图标!

安装Play Store后首次启动.


3 - 我不确定是否需要所有这些命令,也许其中一些是矫枉过正的...它似乎有效 - 这才是最重要的.:)


这对我来说最新的25/7.1仿真器.唯一奇怪的是`/ system/app/SdkSetup.apk`在我的图片中不存在.非常感谢,为了解决这个问题而疯狂!
Open Gapps似乎包含.lz文件(如gsfcore-all.tar.lz),而不是.xz文件.我尝试了多种工具,其中没有一种能够解压缩.lz文件,所以我可以获得APK.有什么建议?
@Chad Schultz这里是该工具的链接http://download.savannah.gnu.org/releases/lzip/如果您在Windows上下载"lzip-1.11-w32.zip"并使用以下命令将其转换为. tar文件并使用另一个工具来最终提取它.

3> Prerak Sola..:

现在没有必要侧面加载执行任何脚本的任何包来获得模拟器上的Play商店.从Android Studio 2.4开始,您现在可以创建一个预先安装了Play商店的AVD.目前,仅支持运行Android 7.0(API 24)系统映像的AVD.

官方消息来源

AVD与Play商店

注意:兼容设备由新的Play商店列表示.


注意:您需要安装一个名为Target:`Android 7.0(Google Play)`的系统映像,而不仅仅是Google API.目前它仅适用于API 24,而不适用于API 25.安装系统映像后,它将显示在"推荐"选项卡下,而不是x86映像选项卡下.

4> 小智..:

想对最后的答案发表评论,但没有登录,只能回答:

要摆脱"只读错误",只需在设备准备就绪后立即停止.我的脚本如下所示:

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

推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有