O emulador do Android Studio não vem com a Play Store para API 23


92

Selecionei este emulador da versão mais recente do Android Studio AVD.

API do Google

Selecionei a versão mais recente da API do Android 23. Como diz "com APIs do Google", pensei que incluiria todos os aplicativos do Google, incluindo a Play Store, para que eu pudesse instalar aplicativos como o Facebook.

Eu vi outros tópicos no SO que parecem estar desatualizados agora ( Como instalar o aplicativo Google Play no emulador do Android Studio? ), Este dá instruções para instalar aplicativos do Google com base em pacotes universais, mas só vai até o Android 4.3 API 18: http://wiki.rootzwiki.com/Google_Apps#Universal_Packages_2

Eu gostaria do API 23. Existe uma maneira de instalar o pacote do Google Apps no emulador?

Parece estranho que o emulador oficial do Android não venha padrão com todos os aplicativos do Google em primeiro lugar ... Isso não parece muito favorável ao Google e poderia significar que os desenvolvedores teriam que comprar dispositivos reais para desenvolver para API 23 ?


Obrigado Sra. Yvette. Acho importante obter uma resposta a essa pergunta para a comunidade Android. Existem muitos desenvolvedores de Android por aí sem acesso a dispositivos Android reais e eu me pergunto como eles farão o desenvolvimento para Android quando não tiverem acesso a todas as ferramentas.
Simon

1
Não tenho crédito suficiente para comentar acima. Re: a partição do sistema / somente leitura, certifique-se de passar o argumento "-writable-system" ao chamar o emulator.exe. Por exemplo: START / B emulator.exe @ Nexus_7-2012_API_22 -no-boot-anim -writable-system
pjl

@pjl - obrigado por este comentário! Eu adicionei à minha resposta.
Dev-iL de

O Google diz que está trabalhando para adicionar suporte para Play Store ao emulador. Enquanto isso, existem algumas soluções alternativas que você pode escolher. Usar a Amazon Appstore é uma opção, mas não é a única opção. Veja aqui .
inesquecívelidSupportsMonica

Respostas:


56

Tive que fazer isso recentemente no emulador API 23 e segui este guia . Ele funciona para o emulador API 23, então você não deve ter problemas.

Observação: todo o crédito vai para o autor da postagem do blog vinculada (pyoor). Só estou postando aqui para o caso de o link quebrar por algum motivo.

....

Baixe o pacote GAPPS

Em seguida, precisamos obter o pacote apropriado do Google Apps que corresponda à nossa versão AVD do Android. Neste caso, usaremos o pacote 'gapps-lp-20141109-signed.zip'. Você pode baixar esse arquivo do BasketBuild aqui .

[pyoor@localhost]$ md5sum gapps-lp-20141109-signed.zip
367ce76d6b7772c92810720b8b0c931e gapps-lp-20141109-signed.zip

Para instalar o Google Play, precisaremos enviar os seguintes 4 APKs para nosso AVD (localizado em ./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 ./

Envie APKs para o emulador

Com nossos APKs extraídos, vamos lançar nosso AVD usando o seguinte comando.

[pyoor@localhost tools]$ ./emulator @<YOUR_DEVICE_NAME> -no-boot-anim

Isso pode levar vários minutos na primeira vez que o AVD é criado. Uma vez iniciado, precisamos remontar a partição do sistema AVDs como leitura / gravação para que possamos enviar nossos pacotes para o dispositivo.

[pyoor@localhost]$ cd ~/android-sdk/platform-tools/
[pyoor@localhost platform-tools]$ ./adb remount

Em seguida, envie os APKs para nosso 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

Lucro!

E, finalmente, reinicie o emualador usando os seguintes comandos:

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

Assim que o emulador for reiniciado, devemos ver o pacote do Google Play aparecer no inicializador de menu. Depois de associar uma conta do Google a este AVD, agora temos uma versão totalmente funcional do Google Play em execução em nosso emulador.


29
Recebo o erro "Sistema de arquivos somente leitura" e nenhum desses arquivos apk está instalado.
wmac

6
Infelizmente, BasketBuild parece não estar mais disponível. s.basketbuild.com indica que está fora do ar desde pelo menos 03/09, sem HEC disponível. Existe outra fonte que você recomenda para os aplicativos do Google?
Chad Schultz

1
Se você obteve o erro "Sistema de arquivos somente leitura", execute o comando: "adb remount". Em seguida, tente os comandos "adb push ..." novamente.
Shangwu

4
Todos os links estão inativos
Mooing Duck

1
qualquer pessoa que não consiga obter gapps: f.lomakuit.com/download/gapps-lp-20141109-signed.zip
Manny265

51

Abaixo está o método que funcionou para mim em emuladores API 23-25 . A explicação é fornecida para API 24, mas funciona quase de forma idêntica para outras versões.

Créditos : Jon Doe , zaidorx , pjl .

Conselho caloroso para os leitores: apenas repasse as etapas antes de segui-las, pois algumas são automatizadas por meio dos scripts fornecidos.


  1. No gerenciador AVD do Android Studio (testado na v2.2.3), crie um novo emulador com o alvo "Android 7.0 (APIs do Google)": Tela AVD após a criação do emulador.

  2. Baixe o pacote Open GApps mais recente para a arquitetura do emulador (CPU / ABI). No meu caso, foi x86_64, mas pode ser outra coisa, dependendo da sua escolha de imagem durante o assistente de criação de dispositivo. Curiosamente, a arquitetura parece mais importante do que a versão correta do Android (ou seja, os gapps para 6.0 também funcionam em um emulador 7.0).

  3. Extraia os .apkarquivos usando os seguintes caminhos (relativos a 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\

    Nota que o Open GAPPS usar a compressão lzip, que pode ser aberto usando a ferramenta encontrada no site da lzip 1 , 2 , ou no Mac usando homebrew: brew install lzip. Então, por exemplo lzip -d gmscore-x86_64.tar.lz.

    Estou fornecendo um arquivo em lote que utiliza 7z.exee lzip.exeextrai todos os .apks necessários automaticamente (no 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

    Para usar isso, salve o script em um arquivo (por exemplo unzip_gapps.bat) e coloque tudo o que for relevante em uma pasta, conforme demonstrado abaixo: Qual deve ser a aparência ...

  4. Atualize o subinário para poder modificar as permissões dos arquivos que enviaremos posteriormente. Um novo subinário pode ser encontrado no pacote SuperSU by Chainfire "Recovery flashable"zip . Obtenha o zip, extraia-o em algum lugar, crie um arquivo em lote com o seguinte conteúdo na mesma pasta e, finalmente, execute-o:

    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
  5. Coloque todos os .apkarquivos em uma pasta e crie um arquivo em lote com este conteúdo 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

    Observe que o caminho E:\...\android-sdk\tools\emulator.exedeve ser modificado de acordo com a localização do Android SDK em seu sistema.

  6. Execute o arquivo em lote acima (o console deve ter a seguinte aparência):

    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
  7. Quando o emulador carregar - feche-o, exclua o dispositivo virtual e crie outro usando a mesma imagem do sistema . Isso corrige o aplicativo Play Store que não responde, "Google Play Services parou" e problemas semelhantes. Funciona porque nas etapas anteriores nós modificamos a própria imagem do sistema (dê uma olhada na Data de modificação em android-sdk\system-images\android-24\google_apis\x86_64\system.img). Isso significa que todos os dispositivos criados a partir de agora com a imagem do sistema terão gapps instalados!

  8. Inicie o novo AVD. Se demorar muito para carregar, feche-o e inicie-o usando:

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

    Depois que o AVD iniciar, você verá a imagem abaixo - observe o ícone da Play Store no canto!

Inicialize primeiro com a Play Store instalada.


3 - Não tenho certeza se todos esses comandos são necessários, e talvez alguns deles sejam exageros ... parece funcionar - que é o que conta. :)


2
Em vez de arquivos .xz, Open Gapps parece conter arquivos .lz (como gsfcore-all.tar.lz). Tentei várias ferramentas, nenhuma das quais é capaz de descompactar os arquivos .lz para que eu possa acessar os APKs. Alguma sugestão?
Chad Schultz,

2
@Chad Schultz aqui está o link para a ferramenta download.savannah.gnu.org/releases/lzip se você estiver no Windows, baixe "lzip-1.11-w32.zip" e use o seguinte comando para convertê-lo em um arquivo .tar e usar outro ferramenta para finalmente extraí-lo.
f4b

1
@Dev-iL PlayStore é instalado no meu emulador, mas não abre. Estou usando um x86_64 API 23 System Image do Nexus 5. Alguma ideia?
ARK

3
Isso funcionou para mim no emulador 25 / 7.1 mais recente. A única coisa estranha era que /system/app/SdkSetup.apknão existia na minha imagem. Muito obrigado, estava ficando louco tentando resolver isso!
wilsonpage

1
Como você exatamente "cria outro usando a mesma imagem do sistema"?
gavsiu

41

Agora não há necessidade de carregar nenhum pacote ou executar qualquer script para obter o Play Store no emulador. A partir do Android Studio 2.4, agora você pode criar um AVD com Play Store pré-instalado. Atualmente, é compatível apenas com AVDs que executam imagens do sistema Android 7.0 (API 24).

Fonte Oficial

AVD com Play Store

Nota: os dispositivos compatíveis são indicados pela nova coluna Play Store.


6
Nota: você precisa instalar uma imagem do sistema que diga Target:, Android 7.0 (Google Play)não apenas APIs do Google. Atualmente, está disponível apenas para API 24, não API 25. Depois de instalar a imagem do sistema, ela aparecerá na guia Recomendado, não na guia Imagens x86.
antoine

2
O Android Studio 2.3.3 no Linux agora oferece suporte a AVDs da Play Store - mas também é importante notar que a Play Store parece estar disponível apenas em destinos x86 no momento, então você ainda precisará usar outro método se quiser obter o Play Armazene em um ARM AVD.
NullColaShip

Agora também existem imagens para APIs 25, 26 e 27 além de 24.
arekolek

25

Queria comentar a última resposta, mas sem login só é possível fazer uma resposta:

Para se livrar do "erro somente leitura", pare o dispositivo imediatamente após estar pronto. Meu script é o seguinte:

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

1
Este me ajuda a resolver o erro do sistema de arquivos somente leitura. como estou trabalhando no Windows, simplesmente ignorei a primeira linha do script e substituí a segunda por este "START / B / tools / emulator @ Nexus_6P_API_23 -no-boot-anim", salvei com a extensão .bat e executei da linha de comando.
Zaidorx

1
Isso é incrível, acabei de remover as primeiras duas linhas, iniciei o emulador por conta própria e executei o arquivo BAT ... funcionou perfeitamente
Im Rick James

coloque adb root no começo se você tiver o adb shell stop stop: deve ser o erro de root.
nutella_eater

adb roota linha deve ser adicionada imediatamente após a adb wait-for-devicelinha para evitar Read-only file systemerros.
efkan

1
Isso funcionou depois que eu adicionei -writable-system ao comando do meu emulador como este, ~ / android-sdk / tools / emulator @ Nexus_5X_API_23 -no-boot-anim -writable-system
reassembler

2

Aqui está o script que usei no linux para uma instância Nexus 5 API 24 x86 SEM 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

Este fez isso por mim.

IMPORTANTE: para impedir que o aplicativo falhe, lembre-se de conceder as permissões de localização dos serviços do Google Play.

Configuração-> Aplicativos-> Configuração (ícone de engrenagem) -> Permissões do aplicativo-> Localização -> (menu superior direito) -> Mostrar sistema-> Ativar serviços do Google Play


2

Vá para http://opengapps.org/ e baixe a versão pico da sua plataforma e versão do Android. Descompacte a pasta baixada para obter
1. GmsCore.apk
2. GoogleServicesFramework.apk
3. GoogleLoginService.apk
4. Phonesky.apk

Em seguida, localize seu emulator.exe. Você provavelmente o encontrará em
C: \ Usuários \ <YOUR_USER_NAME> \ AppData \ Local \ Android \ sdk \ tools

Execute o comando:
emulator -avd <YOUR_EMULATOR'S_NAME> -netdelay none -netspeed full -no-boot-anim -writable-system

Nota: Use -writable-system para iniciar seu emulador com a imagem do sistema gravável.

Em seguida,
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

Em seguida, reinicie o emulador
adb shell stop
adb shell start

Para verificar a execução,
adb shell pm lista os pacotes e você encontrará o pacote com.google.android.gms para google


1

A partir de agora, a instalação dos apks no /systemdiretório parece estar funcionando usando o adb pushcomando.

Algum serviço oculto estava remontando automaticamente o /systemdiretório no read-onlymodo.

De qualquer forma, consegui instalar a Play Store em uma máquina virtual normal (ou seja, máquina virtual não Google-Api) simplesmente montando o system.imgarquivo do meu sistema operacional e copiando os arquivos.

# 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

Os arquivos APK podem ser extraídos de qualquer dispositivo Android real executando o Google Apps usando o adb pullcomando

[Para obter o caminho exato dos apks, podemos usar o comando pm list packages -fdentro do shell adb]


Não estou convencido de que haja algum serviço "misterioso" em execução ... ao contrário, havia um bug no emulador (ou nas imagens do sistema) que parece ter sido corrigido, o que permitiu que várias cópias de apks existissem no /systemdiretório. Percebi que apkcolocar cada um dos s em uma pasta correta não resulta em erros de gravação. Atualizei minha resposta - você poderia tentar se funciona para você agora?
Dev-iL

Estou enfrentando o mesmo problema, não consegui passar o sistema de arquivos somente leitura quando push apks, acho que a única maneira é editar a imagem do sistema android do emulador e depois como editar a imagem do android do windows 8, obrigado. Preciso instalar o serviço google play mais recente e o jogo google play no emulador do Android 6.0.
noname.cs

2
Eu instalei o linux e copiei o apks para um system.img 6.0 com o google apis, mas quando criei um novo emulador, ele não tinha o serviço google play ou a loja google play. Vou tentar novamente com apis rom não google.
noname.cs

1

Resolvido de maneira fácil: você deve criar um novo emulador, antes de abri-lo pela primeira vez, siga estas 3 etapas fáceis:

1- vá para C: \ Usuários [usuário] .android \ avd [pasta do seu dispositivo virtual] abra "config.ini" com um editor de texto como o bloco de notas

2- mudança

"PlayStore.enabled = false" para "PlayStore.enabled = true"

3- mudança

mage.sysdir.1 = system-images \ android-30 \ google_apis \ x86 \

para

image.sysdir.1 = system-images \ android-30 \ google_apis_playstore \ x86 \


1

O que você precisa fazer é atualizar o config.iniarquivo do dispositivo e baixar novamente a imagem do sistema.

Atualize os seguintes valores em C:\Users\USER\.android\avd\DEVICE_ID\config.ini(no Windows) ou ~/.android/avd/DEVICE_ID/config.ini(no Linux)

PlayStore.enabled = true
image.sysdir.1=system-images\android-27\google_apis_playstore\x86\
tag.display=Google Play
tag.id=google_apis_playstore

Em seguida, baixe novamente a imagem do sistema para o dispositivo em Android Studio> Ferramentas> AVD Manager

Isso é tudo. Reinicie o dispositivo e você terá a Play Store instalada.

Isso também foi respondido aqui: Como instalar o aplicativo Google Play no emulador do Android Studio?


0

Só quero adicionar outra solução para usuários React Native que precisam apenas do aplicativo Expo.

  1. Instale o aplicativo Expo
  2. Abra seu projeto
  3. Clique em Dispositivo -> Abrir no Android - Neste estágio, a Expo irá instalar o aplicativo expo para Android e você poderá abri-lo.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.