15 votos

Dispositivo virtual Android root con Android 7.1.1

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 root al dispositivo.

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

He investigado este tema durante un tiempo y he visto varios enfoques. La mayoría de las respuestas fueron publicadas hace bastante tiempo.

Creo que es bastante extraño que no haya una opción para activar el root, después de todo, esto es un SDK.

¿Cómo puedo hacer root a un dispositivo virtual de Android, con Android 7.1.1, permitiendo efectivamente que las aplicaciones instaladas tengan acceso root?

editar: Preferiría no recurrir a emuladores de pago como Genymotion si es posible.

editar2: Esto es solo para uso personal.

editar3: Genymotion parece ser una solución viable, como un emulador alternativo. ¿Por qué el SDK/Emulador de Android no ofrece esta característica?

editar4: La respuesta de xavier_fakerat parece funcionar perfectamente, sin embargo, desde la versión 3.1 de Android Studio esto no parece ser un root permanente. Una vez que se reinicia el AVD, se pierde el acceso root.

13voto

xavier_fakerat Puntos 1

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

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

enter image description here

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

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

  1. 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)

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

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

enter image description here

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

1 votos

Gracias por la respuesta detallada. Aún no lo he intentado, ¡pero parece ser una solución viable!

1 votos

@SaAtomic, tus pasos son muy útiles. Además, uno también puede instalar Supersu 2.82/Magisk utilizando una recuperación personalizada, por ejemplo, TWRP, y obtener fácilmente acceso root. Estas instrucciones funcionan bien en cualquier dispositivo con Android 7.1.1 o 7.1.2. ¡Gracias!

0 votos

Acabo de probar esto con Android SDK 2.3.3 (AVD Manager) y píxel virtual usando Android 7.1.1. Funciona tal como se describe de inmediato. ¡Gracias!

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X