Arrastré mi Galaxy S3 desbloqueado (SGH-T999)
Ahora, estoy tratando de ejecutar adb root
desde el símbolo del sistema de Windows , sin embargo, obtengo un adbd cannot run as root in production builds
error. Entonces, lo primero que verifiqué fue si mi teléfono estaba realmente rooteado.
Entonces probé lo siguiente:
Abrir símbolo del sistema
$adb devices // lists my device
$adb shell //goes to shell
$su // opens a 'SuperSu' prompt on my phone and I 'Grant' permission
# // Before following the rooting instructions, I was getting 'no su command found' in the previous step. So, I believe my phone is ROOTED. **Correct me if I'm wrong.**
Sin embargo, cuando lo hago adb root
, aparece un adbd cannot run as root in production builds
error. Entonces, pensé, podría tener que hacer algunas cosas adicionales más allá de lo que hice anteriormente. Probé todas las soluciones en las siguientes preguntas SO:
- Lanzar un script como root a través de ADB
- permiso de remontaje de adb denegado, pero capaz de acceder al superusuario en shell - android
- No se puede ejecutar 'adb root' en un teléfono Android rooteado
Ninguno de los anteriores funcionó para mí. Todo lo que hacen es dar acceso a la raíz DENTRO de SHELL. Quiero adb root
trabajar para poder ejecutar varios comandos adb SIN entrar en el shell.
Respuestas:
Por diseño, el
adb root
comando funciona solo en compilaciones de desarrollo (es decir,eng
yuserdebug
que tienenro.debuggable=1
por defecto). Entonces, para habilitar eladb root
comando en su dispositivo de otro modo rooteado , simplemente agregue laro.debuggable=1
línea a uno de los siguientes archivos:Si desea
adb shell
comenzar comoroot
predeterminado, agreguero.secure=0
también.Alternativamente, puede usar
adbd
binario modificado (que no buscaro.debuggable
)De https://android.googlesource.com/platform/system/core/+/master/adb/daemon/main.cpp
#if defined(ALLOW_ADBD_ROOT) // The properties that affect `adb root` and `adb unroot` are ro.secure and // ro.debuggable. In this context the names don't make the expected behavior // particularly obvious. // // ro.debuggable: // Allowed to become root, but not necessarily the default. Set to 1 on // eng and userdebug builds. // // ro.secure: // Drop privileges by default. Set to 1 on userdebug and user builds.
fuente
En algunas ROM amigables para desarrolladores, puede habilitar el acceso raíz en Configuración> opción de desarrollador> Acceso raíz . Después de que
adb root
esté disponible. Desafortunadamente, no funciona para la mayoría de las ROM estándar del mercado.fuente
Me encontré con este problema al intentar rootear el emulador, descubrí que era porque estaba ejecutando el emulador Nexus 5x que tenía Google Play. Creó un emulador diferente que no tenía Google Play y
adb root
rooteará el dispositivo por usted. Espero que esto ayude a alguien.fuente
Lo uso para ingresar al modo su en abd shell
adb shell "su"
fuente
adb shell "su -c whoami"
Tengo un Samsung Galaxy Trend Plus rooteado (GT-S7580).
Ejecutar 'adb root' me da el mismo error de 'adbd no se puede ejecutar como root en las compilaciones de producción'.
Para los dispositivos que tienen Opciones de desarrollador -> Acceso raíz, elija "Solo ADB" para proporcionar acceso de raíz adb al dispositivo (como lo sugiere NgaNguyenDuy ).
Luego intente ejecutar el comando según la solución en Iniciar un script como root a través de ADB . En mi caso, solo quería ejecutar el comando 'netcfg rndis0 dhcp', y lo hice de esta manera:
adb shell "su -c netcfg rndis0 dhcp"
Compruebe si está cometiendo algún error al ejecutarlo de esta manera.
Si aún no funciona, verifique si ha rooteado el dispositivo correctamente. Si aún no tiene suerte, intente instalar una ROM personalizada como Cyanogen Mod para que funcione 'adb root'.
fuente
Debe reemplazar el binario adbd en la carpeta boot.img / sbin / por uno que sea compatible con su. También tendrá que hacer algunas ediciones default.prop.
Samsung parece hacer esto más difícil que otros proveedores. Tengo algunos binarios adbd que puede probar, pero requerirá el conocimiento de descompilar y volver a compilar el archivo boot.img con el nuevo binario. Además, si tiene un gestor de arranque bloqueado ... esto no sucederá.
Además, Chainfire tiene una aplicación que otorgará permiso de raíz adbd en la tienda de juegos: https://play.google.com/store/apps/details?id=eu.chainfire.adbd&hl=en
Por último, si está intentando escribir un script de Windows con permisos SU, puede hacer esta compra usando el siguiente estilo de comando ... Sin embargo, al menos necesitará otorgar (en el teléfono) permisos SU la primera vez que se ejecute. .
adb shell "su -c ls" <-list directorio de trabajo con derechos su. adb shell "su -c echo anytext> /data/test.file"
Estos son solo algunos ejemplos. Si indica específicamente lo que está tratando de lograr, es posible que pueda darle un consejo más específico.
-cosler
fuente
adbd
tiene un indicador / opción de compilación para habilitar el acceso de root:ALLOW_ADBD_ROOT=1
.Hasta Android 9: si
adbd
en su dispositivo se compila sin esa bandera, siempre perderá los privilegios al iniciarse y, por lo tanto, "adb root" no ayudará en absoluto. Tenía que parchear las llamadas asetuid()
,setgid()
,setgroups()
y la capacidad de las gotas del mismo binario para obtener un ADBD arraigado de forma permanente en mi lector de libros electrónicos.Con Android 10 esto cambió; cuando el teléfono / tableta está desbloqueado (
ro.boot.verifiedbootstate == "orange"
), el modo raíz adb es posible en cualquier caso.fuente
Si realmente necesita
ADB
ejecutar comoroot
, la forma más rápida y fácil es instalar las ROM personalizadas de Android y la más popular esCyanogenMod
que tiene lasRoot Access
opciones en el menú de opciones del desarrollador donde puede elegir otorgar acceso de rootapps and ADB
. Usé CM antes, pero como ya no estaba desarrollado, intenté buscar algunas soluciones. Aunque CyanogenMod sigue siendo una buena alternativa porque no tiene bloatware.Una alternativa que descubrí de un amigo es usar la
adbd insecure
aplicación que puedes probar desde aquí: https://forum.xda-developers.com/showthread.php?t=1687590 . En mi caso, funciona perfectamente con un kernel personalizado de Android, pero no con la ROM estándar de Android (solo Android de vanilla). También puede probar otras alternativas como modificarboot.img
la ROM de Android.fuente