para - eliminar dispositivo virtual android studio
El emulador de Android Studio no viene con Play Store para API 23 (8)
Seleccioné este emulador de la versión más reciente de Android Studio AVD.
He seleccionado la última versión de Android API 23. Debido a que 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 subprocesos 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 sube a 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 estándar con todas las aplicaciones de Google en primer lugar ... Esto no parece ser un gran apoyo de Google y podría significar que los desarrolladores tendrán que comprar dispositivos reales para desarrollar API 23 ?
A continuación se muestra el método que funcionó para mí en los emuladores API 23-25 . La explicación se proporciona para API 24 pero funciona casi de manera idéntica para otras versiones.
Créditos : Jon Doe , zaidorx , pjl .
Consejos cálidos para los lectores: simplemente siga los pasos antes de seguirlos, ya que algunos se automatizan a través de los scripts proporcionados.
-
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)":
-
Descargue el último paquete here para la arquitectura del emulador (CPU / ABI). En mi caso, era
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, gapps para 6.0 también funciona en un emulador 7.0). -
Extraiga los archivos
.apk
utilizando las siguientes rutas (en relación conopen_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/
Tenga en cuenta que Open GApps utiliza la compresión Lzip, que se puede abrir con la herramienta que se encuentra en el sitio web Lzip 1 , 2 o en Mac con homebrew:
brew install lzip
. Entonces, por ejemplo,lzip -d gmscore-x86_64.tar.lz
.Proporciono un archivo por lotes que utiliza
7z.exe
ylzip.exe
para extraer todos los archivos7z.exe
necesarios 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: -
Actualice el binario
su
para poder modificar los permisos de los archivos que luego cargaremos. Se puede encontrar un nuevo binario en el paquete zip "Recuperable flasheable" de SuperSU by Chainfire . Obtenga el zip, extráigalo en alguna parte, cree un archivo por lotes con los siguientes contenidos 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
-
Coloque todos los archivos
.apk
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
Observe que la ruta
E:/.../android-sdk/tools/emulator.exe
debe modificarse de acuerdo con la ubicación del SDK de Android en su sistema. -
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
-
Cuando se carga el emulador, ciérrelo, elimine el dispositivo virtual y luego cree otro utilizando la misma imagen del sistema . Esto soluciona la aplicación Play Store que no responde, "Google Play Services se ha detenido" y problemas similares. Funciona porque en los pasos anteriores hemos modificado la imagen del sistema en sí (eche un vistazo a la Fecha de modificación en
android-sdk/system-images/android-24/google_apis/x86_64/system.img
). ¡Esto significa que cada dispositivo creado a partir de ahora con la imagen del sistema tendrá huecos instalados! -
Inicie el nuevo AVD. Si la carga demora mucho tiempo, ciérrela y, en su lugar, iníciela con:
START /B E:/.../android-sdk/tools/emulator.exe @Nexus_6_API_24 adb wait-for-device adb shell "su --daemon &"
Después de que se inicie el AVD, verá la imagen a continuación: ¡observe el icono de Play Store en la esquina!
3 - No estoy seguro de que todos estos comandos sean necesarios, y quizás algunos de ellos son excesivos ... parece funcionar, que es lo que cuenta. :)
A partir de ahora, parece que la instalación de las aplicaciones en el directorio
/system
funciona con el comando
adb push
.
Algún servicio oculto estaba remontando automáticamente el directorio
/system
en modo de
read-only
.
De cualquier manera, pude instalar Play Store en una máquina virtual normal (es decir, una máquina virtual que no es Google-Api) simplemente montando el archivo
system.img
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 comando
adb pull
[Para obtener la ruta exacta de los apks, podemos usar el comando
pm list packages -f
dentro del shell adb]
Ahora no hay necesidad de cargar ningún paquete de ejecutar ningún script 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 Android 7.0 (API 24).
Nota: Los dispositivos compatibles se denotan en la nueva columna Play Store.
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 de los servicios de Google Play.
Configuración-> Aplicaciones-> Config (icono de engranaje) -> Permisos de aplicaciones-> Ubicación -> (Menú superior derecho) -> Mostrar sistema-> Habilitar servicios de Google Play
Quería comentar sobre la última respuesta, pero sin iniciar sesión solo es posible responder:
Para deshacerse del "error de solo lectura", simplemente detenga el dispositivo inmediatamente después de que esté listo. Mi guión se ve de la siguiente manera:
#!/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
Recientemente tuve que hacer esto 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 va al autor de la publicación del blog vinculada (pyoor). Solo lo estoy publicando aquí en caso de que el enlace se rompa por algún motivo.
....
Descargue el paquete GAPPS
A continuación, debemos desplegar el paquete de Google Apps apropiado que coincida con nuestra versión AVD de Android. En este caso usaremos el paquete ''gapps-lp-20141109-signed.zip''. Puede descargar ese archivo desde BasketBuild here .
[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 ./
Empuje APKs al emulador
Con nuestros APK extraídos, iniciemos nuestro AVD con 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
Luego, empuje 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, reinicie el emualator usando los siguientes comandos:
[pyoor@localhost platform-tools]$ ./adb shell stop && ./adb shell start
Una vez que se reinicia el emulador, deberíamos ver aparecer el paquete de Google Play en el menú de inicio. Después de asociar una cuenta de Google con este AVD, ahora tenemos una versión totalmente funcional de Google Play que se ejecuta bajo nuestro emulador.
Solo quiero agregar otra solución para los usuarios de React Native que solo necesitan la aplicación Expo.
- Instala la aplicación Expo
- Abre tu proyecto
- Haga clic en Dispositivo -> Abrir en Android: en esta etapa, Expo instalará la aplicación expo de Android y podrá abrirla.
Vaya a
here
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, busque su emulator.exe.
Probablemente lo encontrarás en
C: / Users / <YOUR_USER_NAME> / AppData / Local / Android / sdk / tools
Ejecute el comando:
emulador -avd <YOUR_EMULATOR''S_NAME> -netdelay none -netspeed full -no-boot-anim -writable-system
Nota: Use -writable-system para iniciar su emulador con una imagen de sistema grabable.
Entonces,
raíz adb
montaje de adb
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, reinicia el emulador
parada de shell adb
inicio de shell adb
Para verificar la ejecución,
adb shell pm list paquetes
y encontrarás el paquete
com.google.android.gms
para google