Tengo todas las versiones de Android SDK(de 1.5 a 2.3.3), y he probado muchos métodos para conseguir la raíz en el emulador de Android. I don't utilizar cualquier dispositivo Android y probar todo en emulador(AVD).
Necesito conseguir acceso root en cualquiera de los emuladores de Android para utilizar la funcionalidad de '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 he instalado la aplicación z4root
,
Pero tarda mucho tiempo y no termina de rootear, y se queda atascado. algunos dicen que si bajamos el sistema a menos de RC30, de esta manera podemos obtener acceso de root. si esto es cierto, entonces ¿cómo hacer esto? Yo uso tanto el sistema operativo Linux como el Windows.
Por favor, que alguien me diga algún método para rootear mi emulador.
Aquí está la lista de comandos que tienes que ejecutar mientras el emulador se está ejecutando, pruebo esta solución para un avd en Android 2.2:
adb shell mount -o rw,remount -t yaffs2 /dev/block/mtdblock03 /system
adb push su /system/xbin/su
adb shell chmod 06755 /system
adb shell chmod 06755 /system/xbin/su
Asume que el binario su se encuentra en el directorio de trabajo. Puedes encontrar su y superuser aquí : http://forum.xda-developers.com/showthread.php?t=682828. Necesitas ejecutar estos comandos cada vez que lances el emulador. Puedes escribir un script que lance el emulador y lo haga root.
Para AVD con 5.1.1 y 6.0 he utilizado el siguiente script en windows:
set adb=adb -s emulator-5558
set arch=x64
set pie=
adb start-server
%adb% root
%adb% remount
rem %adb% shell mount -o remount,rw /system
%adb% shell setenforce 0
%adb% install common/Superuser.apk
%adb% push %arch%/su%pie% /system/bin/su
%adb% shell chmod 0755 /system/bin/su
%adb% push %arch%/su%pie% /system/xbin/su
%adb% shell chmod 0755 /system/xbin/su
%adb% shell su --install
%adb% shell "su --daemon&"
rem %adb% shell mount -o remount,ro /system
exit /b
Necesito UPDATE.zip de SuperSU. Descomprimirlos en cualquier carpeta. Crea un archivo bat con el contenido anterior. No olvides especificar la arquitectura y el dispositivo necesarios: set adb=adb -s emulator-5558
y set arch=x64
. Si ejecuta Android por encima o igual a 5.0, cambie set pie=
por set pie=.pie
. Ejecútalo. Obtendrás un root temporal para la ejecución actual.
Si tiene un error al volver a montar la partición del sistema, entonces necesita iniciar AVD desde la línea de comandos. Ver abajo el primer paso para Android 7.
Si quiere que sea persistente - actualice el binario en SuperSU y almacene system.img desde la carpeta temporal como reemplazo de system.img por defecto.
Cómo convertir la raíz temporal resultante en una permanente.
Primero - va a SuperSu. Ofrece una actualización binaria. Actualizar en la forma normal. Rechazar el reinicio.
Segundo - sólo relevante para los emuladores. El mismo AVD. La conclusión es que los cambios en la imagen del sistema no se guardarán. Usted necesita para mantenerlos por sí mismos.
Ya hay instrucciones varían para diferentes emuladores.
Para AVD se puede tratar de encontrar un archivo temporal system.img, guardarlo en algún lugar y utilizar cuando se inicia el emulador.
En Windows se encuentra en el %LOCALAPPDATA%\Temp\AndroidEmulator
y tiene un nombre algo así como TMP4980.tmp
.
Lo copias en una carpeta del dispositivo avd (%HOMEPATH%.android\d\%AVD_NAME%.avd\
), y le cambias el nombre a system.img
.
Ahora se utilizará al inicio, en lugar de lo habitual. Es cierto que si la imagen en el SDK se actualiza, tendrá la antigua.
En este caso, tendrá que eliminar este 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:
Necesita ejecutar el emulador manualmente.
Ir a la carpeta sdk sdk\tools\lib64\qt\lib
.
Ejecute desde esta carpeta el emulador con las opciones -writable-system -selinux disabled
.
Así:
F:\android\k\tools\lib64\qt\lib>F:\android\sdk\tools\emulator.exe -avd 7.0_x86 -verbose -writable-system -selinux disabled
Es necesario reiniciar adbd
desde la raíz:
adb -s emulator-5554 root
Y volver a montar el sistema:
adb -s emulator-5554 remount
Se puede hacer sólo una vez por emulador de ejecución. Y cualquier otro remount puede romper el modo de escritura. Debido a esto no es necesario ejecutar ningún otro comando con remount, como mount -o remount,rw /system
.
Los otros pasos siguen siendo los mismos - subir el binario, ejecutar el binario como demonio, etc.
Imagen de AVD Android 7 x86 con root:
Si ves un error sobre PIE al ejecutar el binario su
- entonces has subido al emulador un binario equivocado. Debes subir el binario llamado su.pie
dentro del archivo, pero en el emulador debe ser nombrado como su
, no su.pie
.
Creo que la forma más fácil es crear un alias para el comando sh
, por ejemplo
adb shell
mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
cd /system/bin
cat sh > su && chmod 4775 su
Probado en el emulador de Android 3.0 y superior.