Rootear dispositivo virtual Android con Android 7.1.1

12

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

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

He investigado este tema ahora 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 puedo rootear un dispositivo virtual Android, ejecutando Android 7.1.1, permitiendo efectivamente el acceso a la raíz de las aplicaciones instaladas?

editar: prefiero no recurrir a emuladores pagados 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 Android Studio versión 3.1 esto no parece ser un enraizamiento permanente. Una vez que se reinicia el AVD, el acceso raíz desaparece.

SaAtomic
fuente

Respuestas:

11

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

Me complace informar a la comunidad de una manera más fácil de rootear el emulador de Android (ejecutado desde Android SDK independiente)

Requisitos :

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

Instrucciones

  1. 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 un 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 se pueda escribir

    • Como sugiere, debemos darle 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 Android SDK y abra el símbolo del sistema presionando Mayús y haciendo clic derecho.

  1. Empujar su binary en el directorio del sistema

    • Extraiga la recuperación flashable.zip (que contiene los binarios su de diferentes arquitecturas)

¡Importante! Utilice únicamente 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:\%USERPROFILE%\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)

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 suy nosu.pie

  1. Cambiar los 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

Escriba los códigos:

su --install

y para configurar daemon:

su --daemon&

¡¡Importante!! Tomar nota del espaciado

  1. Establecer SELinux en Permisivo (es decir, desactivar SE Linux)

    • Finalmente apague selinux a través de este código:

setenforce 0

¡¡Eso es practicamente todo!! Abra la aplicación SuperSU y puede solicitar actualizar los archivos 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 de referencia era para versiones anteriores de Android y, por lo tanto, la razón de los 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, y también después de ver la necesidad de que muchos usuarios arraigan sus emuladores también. Espero que esto también beneficie mucho

Irvin H: Rooteando 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 la preservación de 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 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-systemparámetro al -avd [avdname]comando normal del emulador para iniciar el emulador. (Ejecutar el emulador solo con el emulador -avd [avdname] no inicia la versión / copia rooteada o puede generar algún error)

Probado en API nivel 22

xavier_fakerat
fuente
1
Gracias por la respuesta detallada. ¡Todavía no lo intenté, pero parece ser una solución viable!
SaAtomic
1
@SaAtomic, sus pasos son muy útiles. Más aún, uno también 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 funcionamiento .... Gracias ..
Panchajanya Sarkar
Acabo de probar esto con Android SDK 2.3.3 (AVD Manager) y Pixel virtual con Android 7.1.1. Funciona tal como se describe de inmediato. ¡Gracias!
SaAtomic
1
Actualización: este enfoque sigue siendo viable con Android Studio 3.0.1
SaAtomic
1
Es muy probable que esté usando una imagen de emulador incorrecta que necesita usar en Google APIs Intel x86 Atom System Imagelugar deGoogle Play Intel x86 Atom System Image
xavier_fakerat