Cómo rootear un emulador de Android (Android 7.1.1/ Nougat)
Me complace informar a la comunidad sobre una forma más fácil de rootear un emulador de Android (ejecutar desde el conjunto de herramientas independiente de Android SDK)
Requisitos:
Nota: SuperSU está obsoleto, pero este método aún funciona para rootear el emulador, y se proporcionarán más actualizaciones para los nuevos métodos de rootear.
Instrucciones
- Instalar SuperSu.apk
-
Instala primero la aplicación SuperSu, simplemente arrástrala y suéltala (si estás ejecutando la última versión del emulador o carga lateralmente a través de adb, es decir, adb -e install supersu.apk
)
-
Después de instalarla, al ejecutarla mostrará una pantalla como se muestra a continuación indicando "No hay binario SU instalado..". Este error simplemente confirma que el dispositivo aún no está rooteado.
- Hacer la partición del sistema del emulador escribible
-
Como sugiere, necesitamos darle al emulador permiso para escribir archivos del sistema.
-
Escribe el siguiente código para lograrlo: emulator.exe -avd {nombre_del_emulador} -writable-system
Nota: Navega hasta la carpeta tools donde está instalado Android SDK y abre el símbolo del sistema allí presionando shift y clic derecho.
- Empujar el binario su en el directorio del sistema
- Extrae el Recovery flashable.zip (que contiene los binarios su de diferentes arquitecturas)
¡Importante! Utiliza solo el binario su que coincida con la arquitectura de tu avd, por ejemplo, x86, arm, etc.., y toma nota de la ruta donde extrajiste estos binarios.
- Asegúrate de estar ejecutando adb como root y también necesitas remontar. Simplemente ingresa estos códigos
adb root
adb remount
Ahora es hora de empujar el binario su:
Este es el código que utilicé con éxito: adb -e push C:\%USERPROFILE%\Desktop\rootemu\x86\su.pie /system/bin/su
(no importa la ubicación específica de mi binario su, cualquier ubicación está bien siempre y cuando no haya espacios en blanco)
Si esto falla, prueba empujando a este directorio en su lugar /system/xbin/su
. Además, para emuladores que ejecutan Android 5.1 y anterior, usa el su
y no su.pie
- Cambiar permisos del binario su
-
A continuación, hagamos una pequeña modificación de los permisos del binario su. Debemos hacer esto en el dispositivo del emulador a través de adb:
adb -e shell
su root
cd /system/bin
chmod 06755 su
¡Importante! Toma nota de la ruta del binario su (la mía es /system/bin)
- Establecer la directiva
install
en el binario su y establecer un daemon
Escribe los códigos:
su --install
y para configurar el daemon:
su --daemon&
¡Importante! Toma nota de los espacios
- Establecer SELinux en Permissive (es decir, desactivar SE Linux)
- Finalmente, desactiva selinux con este código:
setenforce 0
¡Eso es prácticamente todo! Abre la aplicación SuperSU y puede pedirte que actualices los binarios, puedes usar el método Normal.
Abre cualquier aplicación que requiera permisos de SU solo para verificar y de hecho SuperSU pregunta si deseas otorgarle permisos de su.
Observaciones
La mayor parte del contenido en referencia era para versiones antiguas de Android y por eso la razón de diferentes comandos y rutas que modifiqué.
Agradecimientos especiales;
Un agradecimiento especial a Irvin H, cuyo tutorial me inspiró a crear esta guía después de haber fallado innumerables veces yo mismo, y también después de ver la necesidad de que muchos usuarios también rootearan sus emuladores. Espero que esto también beneficie a muchos
Irvin H: Rooting the android emulator –en Android Studio 2.3 (Android 4.4)
Actualización
Como mencionó SaAtomic,
Este enfoque sigue siendo viable con Android Studio 3.0.1
Después de actualizar a la versión del emulador 27.2.9
y superior ahora es mucho más fácil preservar el root a través de la función de instantánea (si copiar el método de imagen del sistema no está funcionando):
Idealmente es más como hibernar el dispositivo virtual con la configuración intacta, por lo tanto, todo se preserva.
Instantáneas
Ahora puedes guardar múltiples instantáneas de AVD para una configuración de dispositivo determinada y elegir cuál de las instantáneas guardadas cargar cuando inicies el emulador. Iniciar un dispositivo virtual cargando una instantánea es bastante similar a despertar un dispositivo físico de un estado de suspensión, en lugar de encenderlo desde un estado apagado.
Esto implica que el único requisito para iniciar el emulador es agregar el parámetro -writable-system
al comando normal del emulador -avd [nombre_avd]
para iniciar el emulador. (Ejecutar el emulador solo con emulador -avd [nombre_avd] no lanzará la versión/copia rooteada o puede provocar algún error)
Probado en el nivel de API 22