Rootear dispositivo virtual Android con Android 7.1.1

Estoy usando el SDK oficial de Android con el emulador de Android para crear un Android 7.1.1 virtual (x86). Necesito probar una serie de cosas, entre otras, algunas aplicaciones requieren acceso de root al dispositivo.

Ahora sé que puedo adb rooty tengo un shell de root, pero eso no permite que las aplicaciones que instalo tengan acceso de root.

He investigado este tema por un tiempo y he visto varios enfoques. La mayoría de las respuestas se han publicado hace bastante tiempo.

Creo que es bastante extraño que no haya una opción para alternar la raíz; después de todo, esto es un SDK.

¿Cómo rooteo un dispositivo virtual Android, con Android 7.1.1, permitiendo efectivamente el acceso de root a las aplicaciones instaladas?

editar: Prefiero no recurrir a emuladores pagos como Genymotion si es posible.

edit2: Esto es únicamente para uso personal.

edit3: Genymotion parece ser una solución viable, como un emulador alternativo. ¿Cómo es que Android SDK/Emulator no ofrece esa función?

edit4: La respuesta de xavier_fakerat parece funcionar perfectamente bien, sin embargo, desde la versión 3.1 de Android Studio, esto no parece ser un enraizamiento permanente. Una vez que se reinicia el AVD, el acceso a la raíz desaparece.

Respuestas (1)

Cómo rootear el emulador de Android (Android 7.1.1/ Nougat)

Me complace informar a la comunidad sobre una forma más fácil de rootear el emulador de Android (ejecutarlo desde un SDK de Android independiente)

Requisitos :

Nota: SuperSU ahora está en desuso, pero este método aún funciona para rootear el emulador, y se brindarán más actualizaciones para los métodos de rooteo más nuevos.

Instrucciones

  1. Instala el SuperSu.apk
  • Instale la aplicación SuperSu en primer lugar, simplemente arrastre y suelte (si está ejecutando la última versión del emulador o descarga a través de adb ie adb -e install supersu.apk)

  • Después de instalarlo, cuando lo ejecuta muestra una pantalla como la que 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.

ingrese la descripción de la imagen aquí

  1. Hacer que la partición del sistema del emulador sea escribible
  • Como sugiere, debemos dar permiso al emulador para escribir archivos del sistema.

  • Escriba el siguiente código para lograr esto:emulator.exe -avd {emulator_name} -writable-system

Nota: navegue a la carpeta de herramientas donde está instalado el SDK de Android y abra el símbolo del sistema presionando shift y haciendo clic con el botón derecho.

  1. Empujando su binario en el directorio del sistema
  • Extraiga el Recovery flashable.zip (que contiene los subbinarios de diferentes arquitecturas)

¡Importante! Solo use el binario su que coincida con su arquitectura avd, por ejemplo, x86, arm, etc., y anote la ruta donde extrajo estos binarios.

  • Asegúrese de estar ejecutando adb como root y también necesita volver a montar. Solo ingresa estos códigos

adb root

adb remount

Ahora es el momento de empujar el binario su:

Este es el código que usé con éxito : adb -e push C:\%USERPROFILE%\Desktop\rootemu\x86\su.pie /system/bin/su

(no importa mi ubicación específica de su binario, cualquier ubicación está bien siempre que no haya espacios en blanco)

Si esto falla, intente empujar a este directorio en su lugar /system/xbin/su. También para emuladores que ejecutan Android 5.1 y versiones anteriores, use el suy nosu.pie

  1. Cambiar permisos del binario su
  • A continuación, modifiquemos un poco 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)

  1. Establecer la installdirectiva en su binario y establecer undaemon

Escribe los códigos:

su --install

y para configurar el demonio:

su --daemon&

¡¡Importante!! Toma nota del espaciado

  1. Configuración de SELinux en Permisivo (es decir, apagar SE Linux)
  • Finalmente apague selinux a través de este código:

setenforce 0

¡¡Eso es practicamente todo!! Abra la aplicación SuperSU y es posible que le solicite actualizar los binarios, puede usar el método Normal.

Abra cualquier aplicación que requiera permisos SU solo para verificar dos veces y, de hecho, SuperSU le preguntará si desea otorgarle permisos su.

ingrese la descripción de la imagen aquí

Observaciones

La mayor parte del contenido en referencia era para versiones anteriores de Android y, por lo tanto, el motivo de los diferentes comandos y rutas que modifiqué.

Agradecimientos especiales;

Agradecimiento especial a Irvin H, cuyo tutorial me inspiró a crear esta guía después de haber fallado innumerables veces, y también después de ver la necesidad de muchos usuarios de rootear sus emuladores también. Espero que esto también beneficie mucho

Irvin H: Rootear el emulador de Android en Android Studio 2.3 ((Android 4.4)

#Actualizar

Como comentó SaAtomic,

Este enfoque sigue siendo viable con Android Studio 3.0.1

Después de actualizar a la versión del emulador 27.2.9y superior, ahora hace que conservar la raíz sea mucho más fácil a través de la función de instantánea (si la copia del método system.img 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 varias instantáneas de AVD para una configuración de dispositivo determinada y elegir cuál de las instantáneas guardadas se cargará cuando inicie el emulador. Iniciar un dispositivo virtual cargando una instantánea es muy parecido a despertar un dispositivo 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-systemparámetro al -avd [avdname]comando normal del emulador para iniciar el emulador. (Ejecutar el emulador solo con emulator -avd [avdname] no inicia la versión/copia rooteada o puede generar algún error)

Probado en API nivel 22

Gracias por la respuesta detallada. Todavía no lo probé, ¡pero parece ser una solución viable!
@SaAtomic, sus pasos son muy útiles. Más aún, también se puede flashear Supersu 2.82/Magisk usando una recuperación personalizada, por ejemplo, TWRP, y puede obtener fácilmente la raíz.... Esto funciona bien en cualquier 7.1.1 o 7.1.2 dispositivos en ejecución.... Gracias..
Acabo de probar esto con Android SDK 2.3.3 (AVD Manager) y Pixel virtual usando Android 7.1.1. Funciona tal como se describe de inmediato. ¡Gracias!
Actualización: este enfoque sigue siendo viable con Android Studio 3.0.1
Intenté su enfoque, pero obtuve un error en el tercer paso. Usé: Android Studio 3.0.1 en Mac, Nexus 5X con Android 7.1, por lo que el nombre del emulador será Nexus_5X_API_25 para su referencia. Al ejecutar adb root como se indica en el tercer paso, aparece el siguiente error: <br/>$<b>adb root</b><br/> <b>adbd no puede ejecutarse como root en compilaciones de producción</b> Amablemente hágamelo saber, si su enfoque todavía funciona en este momento. Gracias.
Lo más probable es que esté usando una imagen de emulador incorrecta, necesita usar el Google APIs Intel x86 Atom System Imageen lugar deGoogle Play Intel x86 Atom System Image
Actualización: después de la última actualización de Android Studio a 3.1, el subinario está /system/xbin/sudisponible para un Pixel AVD con Android 7.1.1 (API 25) y no importa lo que intente, el enraizamiento no es persistente. Después de reiniciar, el AVD ya no está rooteado.
$ adb remount 1 No se ejecuta como root. Pruebe "adb root" primero.
@SaAtomicnecesitas actualizar el emulador y usar snaptop para arrancar
El primer enlace está muerto.