Cómo rootear el emulador de Android (probado en Android 7.1.1 / Nougat)
Requisitos :
Instrucciones
Instale el SuperSu.apk
Instale la aplicación SuperSu en primer lugar, simplemente arrastre y suelte (si ejecuta la última versión del emulador o carga lateral a través de adb, es decir adb -e install supersu.apk
)
Después de instalarlo, cuando lo ejecuta, muestra una pantalla como se muestra a continuación que indica "No hay ningún binario SU instalado ...". Este error solo confirma que el dispositivo aún no está rooteado.
Hacer que la partición del sistema del emulador se pueda escribir
Como sugiere, debemos darle permiso al emulador para escribir archivos del sistema.
Escriba el siguiente código para lograr esto: emulator -avd {emulator_name} -writable-system
Si tiene más de un AVD, puede obtener una lista de avds utilizando el comando: emulator -list-avds
Nota: navegue a la carpeta de herramientas donde está instalado Android SDK y abra el símbolo del sistema presionando Mayús y haciendo clic derecho.
Empujar su binary en el directorio del sistema
- Extraiga la recuperación flashable.zip (que contiene los binarios su de diferentes arquitecturas)
¡Importante! Solo use el binario su que coincida con su arquitectura avd, por ejemplo, x86, arm, etc., y observe la ruta de acceso donde extrajo estos binarios.
- Asegúrese de estar ejecutando adb como root y también necesita volver a montar. Solo ingrese estos códigos
adb root
adb remount
Ahora es el momento de empujar el binario su:
Este es el código que utilicé con éxito :adb -e push C:\Users\User1\Desktop\rootemu\x86\su.pie /system/bin/su
(no importa mi ubicación específica de su binary, cualquier ubicación está bien siempre que no haya espacios en blanco)
nota: Para resolver bin
o xbin
hacer en la consola antes:> adb shell
,>ls /system/xbin/su
Si esto falla, intente presionar este directorio en su lugar /system/xbin/su
. También para emuladores que ejecutan Android 5.1 y versiones inferiores, use su
y nosu.pie
Cambiar los permisos del binario su
- A continuación, hagamos un poco de modificación de los permisos de su binary. Tenemos que hacer esto en el dispositivo emulador a través de adb:
adb -e shell
su root
cd /system/bin
chmod 06755 su
¡¡Importante!! Tome nota de su ruta binaria (la mía es / system / bin)
- Establecer la
install
directiva en su binario y establecer undaemon
Escribe los códigos:
su --install
y para configurar daemon:
su --daemon&
¡¡Importante!! Tomar nota del espaciado
Establecer SELinux en Permisivo (es decir, desactivar SE Linux)
- Finalmente apague selinux a través de este código:
setenforce 0
Abra la aplicación SuperSU y puede solicitar actualizar los archivos binarios, puede usar el método Normal.
Nota: Si está experimentando bootloops, en lugar de actualizar los archivos binarios, simplemente utilícelo como está.
¡¡Eso es practicamente todo!!
Abra cualquier aplicación que requiera permisos SU solo para verificar dos veces y, de hecho, SuperSU le preguntará si desea otorgarle permisos su.
Para que la raíz persista, actualice su binario (usando el método Normal), luego copie system.img del directorio temporal ( Users\AppData\Local\Temp\Android Emulator
el archivo generalmente se nombra aleatoriamente, por ejemplo, 1359g.tmp
con un tamaño grande) y reemplace el predeterminado system.img
.
Actualizar :
He notado que es más fácil obtener una imagen del sistema temporal en Linux que en Windows. Puedes intentar usar una imagen instantánea.
Actualización 4 de agosto de 2018
Con la aparición del emulador 27.3.x
, ahora hace que la preservación de la raíz sea mucho más fácil a través de la función de instantánea (si se copia elsystem.img
método no funciona):
Idealmente, es más como hibernar el dispositivo virtual con la configuración intacta, por lo tanto, todo se conserva.
Instantáneas
Ahora puede guardar múltiples instantáneas de AVD para una configuración de dispositivo determinada y elegir cuáles de las instantáneas guardadas cargar cuando inicia el emulador. Iniciar un dispositivo virtual cargando una instantánea es muy parecido a despertar un estado físico desde un estado de suspensión, en lugar de arrancarlo desde un estado apagado.
Esto implica que el único requisito para iniciar el emulador es agregar el -writable-system
parámetro al emulator -avd [avdname]
comando normal para iniciar el emulador. ( Ejecutar el emulador solo emulator -avd [avdname]
no inicia la versión / copia rooteada o puede generar algún error )
Probado en el nivel API 22
También para problemas de bootloop, consulte la otra publicación: Emulador de Android: ¿cómo evitar el bucle de arranque después del rooteo? y actualizaciones de los mismos.
Observaciones
La mayoría del contenido de referencia era para versiones anteriores de Android y, por lo tanto, la razón de los diferentes comandos y rutas que modifiqué.
Agradecimientos;