El emulador de Android Studio no viene con Play Store para API 23

92

Seleccioné este emulador de la versión más reciente de Android Studio AVD.

API de Google

He seleccionado la última versión de la API de Android 23. Como dice "con las API de Google", pensé que en realidad incluiría todas las aplicaciones de Google, incluida Play Store, para poder instalar aplicaciones como Facebook.

He visto otros hilos en SO que parecen estar desactualizados ahora ( ¿Cómo instalar la aplicación Google Play en el emulador de Android Studio? ), Este da instrucciones para instalar aplicaciones de Google basadas en paquetes universales, pero solo llega hasta Android 4.3 API 18: http://wiki.rootzwiki.com/Google_Apps#Universal_Packages_2

Me gustaría el de API 23. ¿Hay alguna forma de instalar el paquete de Google Apps en el emulador?

Parece extraño que el emulador oficial de Android no venga de serie con todas las aplicaciones de Google en primer lugar ... Esto no parece un gran apoyo para Google y podría significar que los desarrolladores tendrán que comprar dispositivos reales para desarrollar para API 23 ?

Simón
fuente
Gracias Sra. Yvette. Creo que es importante obtener una respuesta a esta pregunta para la comunidad de Android. Hay muchos desarrolladores de Android por ahí sin acceso a dispositivos Android reales y me pregunto cómo van a desarrollar para Android cuando no tienen acceso a todas las herramientas.
Simon
1
No tengo suficiente credibilidad para comentar arriba. Re: la partición de sólo lectura / sistema, asegúrese de pasar el argumento "-writable-system" cuando llame a emulator.exe. Por ejemplo: START / B emulator.exe @ Nexus_7-2012_API_22 -no-boot-anim -writable-system
pjl
@pjl - ¡gracias por este comentario! Lo he agregado a mi respuesta.
Dev-iL
Google dice que están trabajando para agregar compatibilidad con Play Store al emulador. Mientras tanto, hay algunas soluciones entre las que puede elegir. Usar Amazon Appstore es una opción, pero no es la única. Vea aquí .
unforgettableidSupportsMonica

Respuestas:

56

Tuve que hacer esto recientemente en el emulador API 23 y seguí esta guía . Funciona para el emulador API 23, por lo que no debería tener ningún problema.

Nota: Todo el crédito es para el autor de la publicación del blog vinculada (pyoor). Lo estoy publicando aquí en caso de que el enlace se rompa por algún motivo.

....

Descarga el paquete GAPPS

A continuación, debemos desplegar el paquete de aplicaciones de Google apropiado que coincida con nuestra versión de Android AVD. En este caso, usaremos el paquete 'gapps-lp-20141109-signed.zip'. Puede descargar ese archivo de BasketBuild aquí .

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

Para instalar Google Play, necesitaremos enviar los siguientes 4 APK a nuestro AVD (ubicado en ./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 ./

Envíe APK al emulador

Con nuestros APK extraídos, lancemos nuestro AVD usando el siguiente comando.

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

Esto puede tardar varios minutos la primera vez que se crea el AVD. Una vez iniciado, necesitamos volver a montar la partición del sistema AVD como lectura / escritura para que podamos enviar nuestros paquetes al dispositivo.

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

A continuación, envíe los APK a nuestro 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!

Y finalmente, reinicia el emualador usando los siguientes comandos:

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

Una vez que se reinicia el emulador, deberíamos ver el paquete de Google Play aparecer dentro del menú de inicio. Después de asociar una cuenta de Google con este AVD, ahora tenemos una versión completamente funcional de Google Play ejecutándose bajo nuestro emulador.

Andy Shephard
fuente
29
Recibo el error "Sistema de archivos de solo lectura" y ninguno de esos archivos apk está instalado.
wmac
6
Desafortunadamente, BasketBuild parece no estar disponible. s.basketbuild.com indica que ha estado inactivo desde al menos el 3 de septiembre, sin que su ETA esté activa . ¿Hay alguna otra fuente que recomiende para las aplicaciones de Google?
Chad Schultz
1
Si tiene el error "Sistema de archivos de solo lectura", ejecute el comando: "adb remount". Luego intente nuevamente los comandos "adb push ...".
Shangwu
4
Todos los enlaces están muertos
Mooing Duck
1
cualquiera que no pueda obtener gapps: f.lomakuit.com/download/gapps-lp-20141109-signed.zip
Manny265
51

A continuación se muestra el método que funcionó para mí en API 23-25 emuladores . La explicación se proporciona para API 24, pero funciona de manera casi idéntica para otras versiones.

Créditos : Jon Doe , zaidorx , pjl .

Un cordial consejo para los lectores: repase los pasos antes de seguirlos, ya que algunos se automatizan a través de los scripts proporcionados.


  1. En el administrador AVD de Android Studio (probado en v2.2.3), cree un nuevo emulador con el objetivo "Android 7.0 (API de Google)": Pantalla AVD después de crear el emulador.

  2. Descargue el último paquete Open GApps para la arquitectura del emulador (CPU / ABI). En mi caso lo fue x86_64, pero puede ser otra cosa dependiendo de su elección de imagen durante el asistente de creación de dispositivos. Curiosamente, la arquitectura parece más importante que la versión correcta de Android (es decir, los gapps para 6.0 también funcionan en un emulador 7.0).

  3. Extraiga los .apkarchivos utilizando las siguientes rutas (relativas 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 Open gapps utilizar la compresión Lzip, que se puede abrir mediante la herramienta en el sitio web Lzip 1 , 2 , o en Mac usando homebrew: brew install lzip. Entonces, por ejemplo lzip -d gmscore-x86_64.tar.lz.

    Estoy proporcionando un archivo por lotes que utiliza 7z.exey lzip.exepara extraer todos los mensajes de .apkcorreo electrónico requeridos automáticamente (en 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 esto, guarde el script en un archivo (por ejemplo unzip_gapps.bat) y coloque todo lo relevante en una carpeta, como se muestra a continuación: Cómo debería verse ...

  4. Actualiza el subinario para poder modificar los permisos de los archivos que luego subiremos. Se supuede encontrar un nuevo binario en el paquete SuperSU by Chainfire "Recovery flashable"zip . Obtenga el zip, extráigalo en algún lugar, cree un archivo por lotes con el siguiente contenido en la misma carpeta y finalmente ejecútelo:

    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 los .apkarchivos en una carpeta y cree un archivo por lotes con estos contenidos 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

    Tenga en cuenta que la ruta E:\...\android-sdk\tools\emulator.exedebe modificarse de acuerdo con la ubicación del SDK de Android en su sistema.

  6. Ejecute el archivo por lotes anterior (la consola debería verse así después):

    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. Cuando se cargue el emulador, ciérrelo, elimine el dispositivo virtual y luego cree otro usando la misma imagen del sistema . Esto corrige la aplicación Play Store que no responde, "Los servicios de Google Play se han detenido" y problemas similares. Funciona porque en los pasos anteriores en realidad hemos modificado la imagen del sistema en sí (echar un vistazo a la fecha de cambio de android-sdk\system-images\android-24\google_apis\x86_64\system.img). Esto significa que todos los dispositivos creados a partir de ahora con la imagen del sistema tendrán gapps instalados.

  8. Inicie el nuevo AVD. Si tarda inusualmente en cargarse, ciérrelo y en su lugar inícielo usando:

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

    Después de que comience el AVD, verá la imagen a continuación: ¡observe el ícono de Play Store en la esquina!

Primer arranque con Play Store instalado.


3 - No estoy seguro de que todos estos comandos sean necesarios, y quizás algunos de ellos sean excesivos ... parece que funciona, que es lo que cuenta. :)

Diablo
fuente
2
En lugar de archivos .xz, Open Gapps parece contener archivos .lz (como gsfcore-all.tar.lz). Probé varias herramientas, ninguna de las cuales puede descomprimir los archivos .lz para poder acceder a los APK. ¿Alguna sugerencia?
Chad Schultz
2
@Chad Schultz aquí está el enlace para la herramienta download.savannah.gnu.org/releases/lzip si está en Windows, descargue "lzip-1.11-w32.zip" y use el siguiente comando para convertirlo en un archivo .tar y usar otro herramienta para finalmente extraerlo.
f4b
1
@ Dev-iL PlayStore se instala en mi emulador, pero no se abre. Estoy usando una imagen de sistema x86_64 API 23 de Nexus 5. ¿Alguna idea?
ARCA
3
Esto funcionó para mí en el último emulador 25 / 7.1. Lo único extraño era que /system/app/SdkSetup.apkno existía en mi imagen. Muchas gracias, ¡me estaba volviendo loco tratando de resolver esto!
wilsonpage
1
¿Cómo se "crea exactamente otro usando la misma imagen del sistema"?
gavsiu
42

Ahora no es necesario cargar ningún paquete o ejecutar scripts para obtener Play Store en el emulador. A partir de Android Studio 2.4, ahora puede crear un AVD que tenga Play Store preinstalado. Actualmente, solo es compatible con los AVD que ejecutan imágenes del sistema de Android 7.0 (API 24).

Fuente oficial

AVD con Play Store

Nota: Los dispositivos compatibles se indican mediante la nueva columna Play Store.

Prerak Sola
fuente
6
Nota: debe instalar una imagen del sistema que diga Target : Android 7.0 (Google Play), no solo las API de Google. Actualmente solo está disponible para API 24, no para API 25. Una vez que instale la imagen del sistema, aparecerá en la pestaña Recomendado, no en la pestaña Imágenes x86.
antoine
2
Android Studio 2.3.3 en Linux ahora es compatible con los AVD de Play Store, pero también vale la pena señalar que Play Store solo parece estar disponible en objetivos x86 en este momento, por lo que aún deberá usar otro método si desea obtener el Play Almacenar en un ARM AVD.
NullColaShip
Ahora también hay imágenes para las API 25, 26 y 27 además de la 24.
arekolek
25

Quería comentar la última respuesta, pero sin iniciar sesión solo es posible hacer una respuesta:

Para deshacerse del "error de solo lectura", simplemente detenga el dispositivo inmediatamente después de que esté listo. Mi guión tiene el siguiente aspecto:

#!/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
Jon Doe
fuente
1
Este me ayuda a resolver el error del sistema de archivos de solo lectura. como estoy trabajando en Windows, simplemente ignoré la primera línea del script y reemplacé la segunda con este "START / B / tools / emulator @ Nexus_6P_API_23 -no-boot-anim", lo guardé con la extensión .bat y lo ejecuté desde la línea de comando.
zaidorx
1
Esto es increíble, acabo de eliminar las dos primeras líneas, lancé el emulador por mi cuenta y luego ejecuté el archivo BAT ... funcionó como un encanto
Soy Rick James
ponga adb root al principio si tiene adb shell stop stop: debe ser un error de root.
nutella_eater
adb rootLa línea debe agregarse inmediatamente después de la adb wait-for-devicelínea para evitar Read-only file systemerrores.
Efkan
1
Esto funcionó una vez añadí -writable-sistema a mi mando emulador como este, ~ / android-sdk / herramientas / emulador @ Nexus_5X_API_23 -no anim-boot--writable-sistema
reensamblador
2

Aquí está el script que usé en linux para una instancia Nexus 5 API 24 x86 SIN 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 lo hizo por mí.

IMPORTANTE: para evitar que la aplicación se bloquee, recuerde otorgar permisos de ubicación a los servicios de Google Play.

Configuración-> Aplicaciones-> Configuración (icono de engranaje) -> Permisos de aplicaciones-> Ubicación -> (Menú superior derecho) -> Mostrar sistema-> Habilitar los servicios de Google Play

Ricardo
fuente
2

Vaya a http://opengapps.org/ y descargue la versión pico de su plataforma y la versión de Android. Descomprima la carpeta descargada para obtener
1. GmsCore.apk
2.
GoogleServicesFramework.apk 3. GoogleLoginService.apk
4. Phonesky.apk

Luego, ubique su emulator.exe. Probablemente lo encontrará en
C: \ Users \ <YOUR_USER_NAME> \ AppData \ Local \ Android \ sdk \ tools

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

Nota: Utilice -writable-system para iniciar su emulador con la imagen del sistema grabable.

Luego,
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

Luego, reinicie el emulador
adb shell stop
adb shell start

Para verificar la ejecución,
adb shell pm enumere los paquetes y encontrará el paquete com.google.android.gms para google

Saini Arun
fuente
2

Lo que debe hacer es actualizar el config.iniarchivo del dispositivo y volver a descargar la imagen del sistema.

Actualice los siguientes valores en C:\Users\USER\.android\avd\DEVICE_ID\config.ini(en Windows) o ~/.android/avd/DEVICE_ID/config.ini(en Linux)

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

Luego, vuelva a descargar la imagen del sistema para el dispositivo desde Android Studio> Herramientas> AVD Manager

Eso es todo. Reinicia tu dispositivo y tendrás la Play Store instalada.

Esto también se ha respondido aquí: ¿Cómo instalar la aplicación Google Play en el emulador de Android Studio?

Aamnah
fuente
2

Resuelto de manera fácil: debes crear un nuevo emulador, antes de abrirlo por primera vez sigue estos 3 sencillos pasos:

1- vaya a "C: \ Users [usuario] .android \ avd [carpeta de su dispositivo virtual]" abra "config.ini" con un editor de texto como el bloc de notas

2- cambiar

"PlayStore.enabled = false" a "PlayStore.enabled = true"

3- cambiar

"mage.sysdir.1 = imágenes del sistema \ android-30 \ google_apis \ x86"

a

"image.sysdir.1 = imágenes del sistema \ android-30 \ google_apis_playstore \ x86"

Sharif Yazdian
fuente
1

A partir de ahora, la instalación de las aplicaciones en el /systemdirectorio parece estar funcionando con el adb pushcomando.

Algún servicio oculto estaba volviendo a montar automáticamente el /systemdirectorio enread-only modo.

De cualquier manera, pude instalar Play Store en una máquina virtual normal (es decir, una máquina virtual que no es de Google-Api) simplemente montando el system.imgarchivo desde mi sistema operativo y copiando los archivos.

# 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

Los archivos APK se pueden extraer de cualquier dispositivo Android real que ejecute Google Apps mediante el adb pullcomando

[Para obtener la ruta exacta de los apks, podemos usar el comando pm list packages -fdentro del shell de adb]

harish2704
fuente
No estoy convencido de que haya algún servicio "misterioso" ejecutándose ... más bien, hubo un error en el emulador (o en las imágenes del sistema) que parece haber sido arreglado, lo que permitió apkque existieran varias copias de s en el /systemdirectorio. Noté que empujar cada uno de los apkcorreos electrónicos a una carpeta correcta no da como resultado errores de escritura. He actualizado mi respuesta, ¿podría intentarlo si funciona para usted ahora?
Dev-iL
Estoy enfrentando el mismo problema, no pude pasar el sistema de archivos de solo lectura cuando presiono apks, creo que la única forma es editar la imagen del sistema Android del emulador y luego cómo editar la imagen de Android desde Windows 8, gracias. Necesito instalar el último servicio de Google Play y el juego de Google Play en el emulador de Android 6.0.
noname.cs
2
He instalado linux y he copiado apks a un system.img 6.0 con google apis, pero cuando creé un nuevo emulador, no tenía el servicio de Google Play o Google Play Store. Lo intentaré de nuevo con rom apis que no sea de Google.
noname.cs
0

Solo quiero agregar otra solución para los usuarios de React Native que solo necesitan la aplicación Expo.

  1. Instalar la Expo aplicación
  2. Abre tu proyecto
  3. Haga clic en Dispositivo -> Abrir en Android - En esta etapa, Expo instalará la aplicación expo para Android y podrá abrirla.
chenop
fuente