web-dev-qa-db-fra.com

adb Shell su fonctionne mais adb root ne le fait pas

J'ai enraciné mon Galaxy S3 débloqué (SGH-T999)

Maintenant, j'essaie d'exécuter adb root à partir de Windows , à l'invite de commande , cependant, l'erreur adbd cannot run as root in production builds s'affiche. Donc, la toute première chose que j'ai vérifiée était de savoir si mon téléphone était vraiment enraciné?

J'ai donc essayé ce qui suit:

Ouvrir l'invite de commande

$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.**

Cependant, lorsque je fais adb root, j'obtiens adbd cannot run as root in production builds erreur. Alors, j'ai pensé que je devrais peut-être faire d'autres choses en plus de ce que j'ai fait ci-dessus. J'ai essayé toutes les solutions dans les SO questions suivantes:

Aucun de ce qui précède n'a fonctionné pour moi. Tout ce qu'ils font est de donner à la racine l'accès à l'intérieur de Shell. Je veux que adb root fonctionne pour pouvoir exécuter diverses commandes adb SANS passer par Shell.

63
rumit patel

Dans certaines ROM conviviales pour les développeurs, vous pouvez simplement activer Accès racine dans Paramètres> Option développeur> Accès racine. Après cela, adb root devient disponible. Malheureusement, cela ne fonctionne pas pour la plupart des ROM en stock sur le marché.

24
NgaNguyenDuy

Par conception, la commande adb root fonctionne uniquement dans les versions de développement (eng et userdebug qui ont ro.debuggable=1 par défaut). Donc, pour activer la commande adb root sur votre périphérique autrement enraciné , ajoutez simplement la ligne ro.debuggable=1 à l'un des fichiers suivants:

/system/build.prop
/system/default.prop
/data/local.prop

Si vous voulez que adb Shell démarre comme root par défaut, ajoutez également ro.secure=0.

Sinon, vous pouvez utiliser le _ binaire modifié adbd (qui ne vérifie pas ro.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.
19
Alex P.

J'ai un Samsung Galaxy Trend Plus enraciné (GT-S7580).

Exécuter 'adb root' me donne la même erreur 'adbd ne peut pas s'exécuter en tant que root dans les versions de production'.

Pour les périphériques dotés d'options de développeur -> Accès racine, choisissez "ADB uniquement" pour fournir un accès racine adb au périphérique (comme suggéré par NgaNguyenDuy ).

Puis essayez d’exécuter la commande selon la solution à l’emplacement Lancez un script en tant qu’utilisateur root via ADB . Dans mon cas, je voulais juste exécuter la commande 'netcfg rndis0 dhcp', et je l'ai fait comme suit:

adb Shell "su -c netcfg rndis0 dhcp"

Veuillez vérifier si vous faites des erreurs en l'exécutant de cette façon.

Si cela ne fonctionne toujours pas, vérifiez si vous avez correctement rooté le périphérique. Si toujours pas de chance, essayez d'installer un ROM personnalisé tel que Cyanogen Mod afin de permettre à 'adb root' de fonctionner.

8
Antony

J'utilise pour entrer en mode su dans adb Shell

adb Shell "su"

7
Samuel Ivan

Vous devez remplacer le fichier binaire adbd du dossier boot.img/sbin/par un autre compatible. Vous devrez également apporter des modifications par défaut à default.prop.

Samsung semble rendre cela plus difficile que d'autres vendeurs. J'ai quelques binaires d'adbd que vous pouvez essayer, mais cela nécessitera la connaissance de la décompilation et de la recompilation du fichier boot.img avec le nouveau fichier binaire. De plus, si vous avez un chargeur de démarrage verrouillé ... cela n'arrivera pas.

De plus, Chainfire a une application qui accordera l’autorisation root d’Adbd dans le Play Store: https://play.google.com/store/apps/details?id=eu.chainfire.adbd&hl=fr

Enfin, si vous essayez d'écrire un script Windows avec des autorisations SU, vous pouvez le faire en utilisant le style de commande suivant ... Cependant, vous devrez au moins accorder (au téléphone) des autorisations SU (au téléphone) le premier moment de son exécution. .

adb Shell "su -c ls" <-list répertoire de travail avec droits su. adb Shell "su -c echo anytext> /data/test.file"

Ce ne sont que quelques exemples. Si vous énoncez précisément ce que vous essayez d'accomplir, je pourrais peut-être vous donner des conseils plus précis.

-scosler

6
scrosler

J'ai rencontré ce problème en essayant de rooter l'émulateur. J'ai découvert que c'était parce que j'utilisais l'émulateur Nexus 5x sur lequel Google Play était installé. Créé un émulateur différent qui n'a pas Google Play et adb root va rooter le périphérique pour vous. J'espère que ça aide quelqu'un.

4
Andrew Steinmetz

Si vous avez vraiment besoin que ADB s'exécute en tant que root, le moyen le plus simple et le plus rapide consiste à installer Android ROM personnalisées et la plus populaire est CyanogenMod car elle a Root Access options dans le menu d'options de développement où vous pouvez choisir de donner à la racine l'accès à apps and ADB. J'avais utilisé CM auparavant, mais comme il n'était plus développé, j'ai essayé de trouver des solutions. Bien que CyanogenMod soit toujours une bonne alternative car il n’a pas de bloatware.

Une alternative que j'ai découverte chez un ami utilise l'application adbd insecure que vous pouvez essayer à partir d'ici: https://forum.xda-developers.com/showthread.php?t=168759 . Dans mon cas, cela fonctionne parfaitement avec un noyau personnalisé Android, mais pas avec le Android stock ROM (Vanille Android uniquement). Vous pouvez également essayer d’autres alternatives, telles que la modification de boot.img de la ROM Android.

1
warfreak92