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 root
y 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.
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 :
Recuperación flashable.zip (contiene su binario) (Aquí hay un enlace espejo alternativo para flashable zip si el enlace principal no funciona: Flashable zip super su 2.82 para todas las roms )
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
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.
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.
¡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.
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 su
y nosu.pie
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)
install
directiva en su binario y establecer undaemon
Escribe los códigos:
su --install
y para configurar el demonio:
su --daemon&
¡¡Importante!! Toma nota del espaciado
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.
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.9
y 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-system
pará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
SaAtómica
Panchajanya Sarkar
SaAtómica
SaAtómica
vivek anand
xavier_fakerat
Google APIs Intel x86 Atom System Image
en lugar deGoogle Play Intel x86 Atom System Image
SaAtómica
su
binario está/system/xbin/su
disponible 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.Caleb Fenton
xavier_fakerat
pookie