Tengo todas las versiones de Android SDK (de 1.5 a 2.3.3), y probé muchos métodos para obtener root en el emulador de Android. No uso ningún dispositivo Android y pruebo todo en el emulador (AVD).
Necesito obtener acceso de root en cualquiera de los emuladores de Android para usar la funcionalidad 'iptables' y 'busybox'. Y para usar iptables debo tener acceso de root. Al menos el comando 'su' debe ejecutarse en el emulador de terminal.
También instalé la z4root
aplicación,
Pero lleva mucho tiempo y no termina de enraizar, y se atasca. algunos dicen que si rebajamos el sistema por debajo de RC30, de esta manera podemos obtener acceso de root. Si esto es cierto, ¿cómo hacer esto? Yo uso Linux y Windows OS.
Por favor, alguien me diga cualquier método para rootear mi emulador.
fuente
Respuestas:
Estas respuestas son todas innecesariamente complicadas :)
fuente
adb root
resultados de ejecución en "adbd no se pueden ejecutar como root en las compilaciones de producción". ¿Estás usando un emulador particular? Por favor proporcione más detalles.adb root
da el erroradbd cannot run as root in production builds
, consulte stackoverflow.com/a/45668555/1682419 : necesita una "Imagen del sistema de las API de Google" en lugar de una "Imagen del sistema de Google Play".Cómo rootear el emulador de Android (probado en Android 7.1.1 / Nougat)
Requisitos :
SuperSU app (chainfire) última versión 2.82
Recuperación flashable.zip (contiene su binario)(Aquí hay un enlace de respaldo alternativo provisto por el usuario de XDA Ibuprophen para las cremalleras flasheables si el enlace principal no funciona: Liberaciones zip descargables )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
¡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.
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
oxbin
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, usesu
y nosu.pie
Cambiar los permisos del binario su
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 daemon:
su --daemon&
¡¡Importante!! Tomar nota del espaciado
Establecer SELinux en Permisivo (es decir, desactivar SE Linux)
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 predeterminadosystem.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
Esto implica que el único requisito para iniciar el emulador es agregar el
-writable-system
parámetro alemulator -avd [avdname]
comando normal para iniciar el emulador. ( Ejecutar el emulador soloemulator -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;
Irvin H: Rooteando el emulador de Android -en Android Studio 2.3 ((Android 4.4)
El acceso de root de Android AVD falla.
fuente
su --install && su --daemon&
en el emulador, seguido desetenforce 0
para obtener la raíz. ¿Conoces alguna solución permanente para root al reiniciar?Aquí está la lista de comandos que debe ejecutar mientras se ejecuta el emulador, pruebo esta solución para un avd en Android 2.2:
Se supone que el binario su está ubicado en el directorio de trabajo. Puede encontrar su y superusuario aquí: http://forum.xda-developers.com/showthread.php?t=682828 . Debe ejecutar estos comandos cada vez que inicie el emulador. Puede escribir un script que inicie el emulador y lo arraigue.
fuente
-partition-size
opción para especificar el tamaño de la partición. Intenta iniciar tu emulador contools/emulator -avd MyAndroidVirtualDeviceName -partition-size 256
adb shell mount -o rw,remount -t yaffs2 /dev/block/mtdblock03 /system
con:adb root
adb remount
Para AVD con 5.1.1 y 6.0 utilicé el siguiente script en Windows:
Necesita UPDATE.zip de SuperSU. Desempaquételos en cualquier carpeta. Crea un archivo bat con el contenido de arriba. No olvide especificar la arquitectura y el dispositivo necesarios:
set adb=adb -s emulator-5558
yset arch=x64
. Si ejecuta Android arriba o igual a 5.0, cambieset pie=
aset pie=.pie
. Ejecutarlo. Obtiene raíz temporal para la ejecución actual.Si recibió un error al volver a montar la partición del sistema, entonces necesita iniciar AVD desde la línea de comandos. Vea a continuación el primer paso para Android 7.
Si desea que sea persistente, actualice el binario en SuperSU y almacene system.img desde la carpeta temporal como reemplazo de system.img predeterminado.
Cómo convertir la raíz temporal resultante en un permanente
Primero, va a SuperSu. Ofrece una actualización binaria. Actualice de la manera normal. Reiniciar rechazar.
Segundo: solo relevante para emuladores. El mismo AVD. La conclusión es que los cambios en la imagen del sistema no se guardarán. Necesitas conservarlos para ellos.
Ya hay instrucciones que varían para diferentes emuladores.
Para AVD, puede intentar encontrar un archivo temporal system.img, guárdelo en algún lugar y úselo cuando inicie el emulador.
En Windows se encuentra en el
%LOCALAPPDATA%\Temp\AndroidEmulator
y tiene un nombre algo así comoTMP4980.tmp
.Lo copia en una carpeta avd device (
%HOMEPATH%\.android\avd\%AVD_NAME%.avd\
) y cambia el nombre asystem.img
.Ahora se usará al principio, en lugar de lo habitual. Verdadero si la imagen en el SDK se actualiza, tendrá la anterior.
En este caso, deberá eliminar esto
system.img
y repetir la operación en su creación.Manual más detallado en ruso: http://4pda.ru/forum/index.php?showtopic=318487&view=findpost&p=45421931
Para Android 7 necesita ejecutar pasos adicionales: 1. Necesita ejecutar el emulador manualmente. Ir a la carpeta SDK
sdk\tools\lib64\qt\lib
. Ejecute desde este emulador de carpeta con opciones-writable-system -selinux disabled
como esta:Necesita reiniciar
adbd
desde la raíz:raíz adb -s emulator-5554
Y sistema de montaje:
Se puede poner solo una vez por emulador de ejecución. Y cualquier otro montaje puede romper el modo de escritura. Debido a esto, no necesita ejecutar ningún otro comando con remontaje, como
mount -o remount,rw /system
.Otros pasos son los mismos: cargar binarios, ejecutar binarios como daemon, etc.
Imagen de AVD Android 7 x86 con root:
Si ve un error sobre PIE en ejecutar
su
binario, entonces carga al emulador binario incorrecto. Debe cargar elsu.pie
archivo binario con nombre dentro del archivo, pero en el emulador debe llamarse comosu
, nosu.pie
.fuente
update binary in SuperSU and store system.img from temp folder as replace of default system.img.
Creo que la forma más fácil es crear un alias para el comando
sh
, p. Ej.Probado en Android Emulator 3.0 y superior.
fuente
mount: '/system' not in /proc/mounts
Aquí mi paquete con todo lo que necesitas. O puede usar este script:
fuente
Acabo de reemplazar y asignar atributos para su a ~ / Android / Sdk / system-images / android-22 / google_apis / x86 / system.img y ahora en Android 5 siempre tengo root incluso para sistemas nuevos, es suficiente para instalar SuperSu. apk
después de eso, SuperSu.apk ve root. Pero no actualizo el archivo binario
fuente
Usé parte del método de las soluciones anteriores; sin embargo, no funcionaron por completo. En la última versión de Andy, esto funcionó para mí:
En Andy (Root Shell) [Para obtener, haga clic derecho en el icono de HandyAndy y seleccione Term Shell]
Dentro del shell, ejecute estos comandos:
Luego, instale SuperSU e instale SU binario. Esto reemplazará el binario SU que acabamos de crear. (Opcional) Elimine SuperSU e instale Superuser by CWM. Instale el binario su nuevamente. Ahora, la raíz funciona!
fuente
Intenté muchas de las sugerencias anteriores, incluida SuperSU y no pude hacer que ninguna funcionara, pero encontré algo mucho más simple que funcionó para mis propósitos. En mi caso, solo quería poder ejecutar sqlite en el símbolo del sistema. Simplemente hice girar un emulador con una versión anterior de Android (Lollipop) y obtuve acceso a la raíz de inmediato.
fuente
Descubrí que el emulador predeterminado API 23 x86_64 está rooteado por defecto.
fuente