Eu fiz root no meu Galaxy S3 desbloqueado (SGH-T999)
Agora, estou tentando executar a adb root
partir do prompt de comando do Windows , mas estou obtendo um adbd cannot run as root in production builds
erro. Então, a primeira coisa que verifiquei foi se meu telefone estava realmente enraizado.
Então, tentei o seguinte:
Abrir prompt de comando
$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.**
No entanto, quando o faço adb root
, recebo um adbd cannot run as root in production builds
erro. Então, pensei, talvez tenha que fazer algumas coisas adicionais além do que fiz acima. Tentei todas as soluções nas seguintes questões do SO:
- Lance um script como root através do ADB
- permissão adb remount negada, mas capaz de acessar o superusuário no shell - android
- Não é possível executar 'adb root' em um telefone Android com acesso root
Nenhuma das opções acima funcionou para mim. Tudo o que eles fazem é dar acesso ROOT DENTRO do SHELL. Eu quero adb root
trabalhar para poder executar vários comandos adb SEM entrar no shell.
Respostas:
O
adb root
comando por design funciona apenas em compilações de desenvolvimento (ou seja,eng
euserdebug
que têmro.debuggable=1
por padrão). Portanto, para habilitar oadb root
comando em seu dispositivo com acesso root , basta adicionar aro.debuggable=1
linha a um dos seguintes arquivos:Se você deseja
adb shell
iniciar comoroot
padrão - adicionero.secure=0
também.Alternativamente, você pode usar o
adbd
binário modificado (que não verificaro.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.
fonte
Em algumas ROMs amigáveis ao desenvolvedor, você pode apenas habilitar o Acesso Root em Configurações> opção Desenvolvedor> Acesso Root . Depois que
adb root
estiver disponível. Infelizmente, ele não funciona para a maioria das ROMs de ações no mercado.fonte
Eu encontrei esse problema ao tentar fazer o root do emulador, descobri que era porque estava executando o emulador Nexus 5x que tinha o Google Play nele. Criei um emulador diferente que não tinha o Google Play e
adb root
fará o root do dispositivo para você. Espero que isso ajude alguém.fonte
Eu uso para entrar no modo su no shell abd
adb shell "su"
fonte
adb shell "su -c whoami"
Eu tenho um Samsung Galaxy Trend Plus (GT-S7580) com root.
Executar 'adb root' me dá o mesmo erro 'adbd não pode ser executado como root em compilações de produção'.
Para dispositivos que têm opções de desenvolvedor -> acesso root, escolha "ADB only" para fornecer acesso root adb ao dispositivo (conforme sugerido por NgaNguyenDuy ).
Em seguida, tente executar o comando de acordo com a solução em Iniciar um script como root por meio do ADB . No meu caso, eu só queria executar o comando 'netcfg rndis0 dhcp' e fiz desta forma:
adb shell "su -c netcfg rndis0 dhcp"
Verifique se você está cometendo algum erro ao executá-lo dessa forma.
Se ainda não funcionar, verifique se você fez o root no dispositivo corretamente. Se ainda não tiver sorte, tente instalar uma ROM personalizada como o Cyanogen Mod para que o 'adb root' funcione.
fonte
Você precisa substituir o binário adbd na pasta boot.img / sbin / por um compatível com su. Você também terá que fazer algumas edições no default.prop.
A Samsung parece tornar isso mais difícil do que outros fornecedores. Eu tenho alguns binários adbd que você pode tentar, mas exigirá o conhecimento de descompilar e recompilar o boot.img com o novo binário. Além disso, se você tiver um bootloader bloqueado ... isso não vai acontecer.
Além disso, Chainfire tem um aplicativo que concederá permissão de root adbd na Play Store: https://play.google.com/store/apps/details?id=eu.chainfire.adbd&hl=en
Por último, se você está tentando escrever um script do Windows com permissões SU, você pode fazer isso usando o seguinte estilo de comando ... No entanto, você precisará pelo menos conceder (no telefone) permissões SU na primeira vez em que for executado. .
adb shell "su -c ls" <-list o diretório de trabalho com direitos su. adb shell "su -c echo anytext> /data/test.file"
Estes são apenas alguns exemplos. Se você declarar especificamente o que está tentando realizar, posso dar conselhos mais específicos
-scosler
fonte
adbd
tem uma compilação bandeira / opção para habilitar o acesso root:ALLOW_ADBD_ROOT=1
.Até Android 9: Se o
adbd
seu dispositivo for compilado sem esse sinalizador, ele sempre perderá os privilégios ao inicializar e, portanto, "adb root" não ajudará em nada. Eu tive que corrigir as chamadas parasetuid()
,setgid()
,setgroups()
e a capacidade cai para fora do binário-me para obter um adbd permanentemente enraizada no meu leitor de ebook.Com o Android 10, isso mudou; quando o telefone / tablet está desbloqueado (
ro.boot.verifiedbootstate == "orange"
), o modo root do adb é possível em qualquer caso.fonte
Se você realmente precisa
ADB
executar o comoroot
, a maneira mais rápida e fácil é instalar ROMs personalizadas do Android e a mais popular éCyanogenMod
porque tem asRoot Access
opções no menu de opções do desenvolvedor onde você pode escolher dar acesso rootapps and ADB
. Eu usei o CM antes, mas como ele não estava mais desenvolvido, tentei procurar algumas soluções por aí. Embora CyanogenMod ainda seja uma boa alternativa porque não possui bloatware.Uma alternativa que descobri com um amigo é usar o
adbd insecure
aplicativo que você pode tentar aqui: https://forum.xda-developers.com/showthread.php?t=1687590 . No meu caso, funciona perfeitamente com um kernel personalizado do Android, mas não com a ROM padrão do Android (apenas para Android vanilla). Você pode tentar outras alternativas também, como modificarboot.img
a ROM do Android.fonte