web-dev-qa-db-fra.com

Comment redémarrer adb de la racine au mode utilisateur?

Question de base sur la BAD.

adb root _ redémarre adb en tant que root. Mais ce que je veux, c'est le redémarrer après un certain temps.

J'ai essayé ce qui suit:

adb kill-server
adb start-server

ça ne marche pas ..

ps -A -> a noté le nombre de processus de adb et l'a tué .. même cela n'a pas fonctionné. Enfin, je redémarre mon appareil. Existe-t-il un moyen de revenir de adb root en adb général?

Merci.

47
mk..

Un peu tard, je suppose, mais voilà: si vous utilisiez "adb root", vous auriez le message suivant:

C:\>adb root
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
restarting adbd as root

pour sortir du mode racine, vous pouvez utiliser:

C:\>adb unroot
restarting adbd as non root
19
Akshay Gaur

adb kill-server et adb start-server ne contrôle que le démon adb du côté PC. Vous devez redémarrer le démon adbd sur le périphérique lui-même après avoir restauré le programme service.adb.root modification de propriété effectuée par adb root:

~$ adb Shell id
uid=2000(Shell) gid=2000(Shell)

~$ adb root
restarting adbd as root

~$ adb Shell id
uid=0(root) gid=0(root)

~$ adb Shell 'setprop service.adb.root 0; setprop ctl.restart adbd'

~$ adb Shell id
uid=2000(Shell) gid=2000(Shell)
28
Alex P.

Essayez ceci pour vous assurer de récupérer votre Shell:

entrez adb Shell (racine). Ensuite, tapez ci-dessous comamnd.

stop adbd && setprop service.adb.root 0 && start adbd &

Cette commande va stop adbd, puis setprop service.adb.root 0 si adbd a réussi stopped, et finalement restart adbd devrait le .root Les propriétés ont été définies avec succès sur 0. Et tout cela se fera en arrière-plan grâce au dernier &.

11
user837048

Je voudrais ajouter un peu plus d'explications à la réponse de @ user837048. Sur mon OS X Yosemite et Galaxy S3 qui est enraciné et utilise les microprogrammes CyanogenMod 11 et KitKat, j’ai fait la procédure ci-dessous pour Enable et Disable invite racine.

S'il vous plaît assurez-vous ci-dessous

  • Sur votre système

    • Assurez-vous que vous avez installé Android SDK Et que vous avez défini des chemins d'accès aux fichiers binaires. tapez which adb sur votre shell. Cela doit vous donner quelque résultat. $ which adb /Applications/Android Studio.app/sdk/platform-tools/adb
  • Sur ton portable

    • Paramètres> Options pour les développeurs> Android Débogage = ON
    • Paramètres> Options pour les développeurs> Accès racine = Apps and ADB

Si vous ne voyez pas Developer Options Dans vos paramètres, sélectionnez Paramètres> À propos du téléphone. Faites défiler jusqu'à Build number Et tapez 7 fois dessus. Je sais que c'est fou. Mais croyez-moi cela fonctionne: D

Connectez votre téléphone via un câble USB. tapez sur votre terminal computer's

$ adb Shell

vous verrez un message semblable, Si un message a été affiché sur votre téléphone portable, pour faire confiance à la connexion, appuyez sur 'Toujours faire confiance' et sur 'OK'

Shell@m0:/ $

maintenant tapez

Shell@m0:/ $ id
uid=2000(Shell) gid=2000(Shell) groups=1004(input),1007(log),1011(adb),1015(sdcard_rw),1028(sdcard_r),3001(net_bt_admin),3002(net_bt),3003(inet),3006(net_bw_stats) context=u:r:Shell:s0

See you are not root

Quittez maintenant Shell, ce qui ramènera à computer's Prompt

Shell@m0:/ $ exit

Maintenant, activez root

$adb Shell
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
root@m0:/ #

Wow .. vous êtes root

root@m0:/ # id
uid=0(root) gid=0(root) context=u:r:Shell:s0

J'ai essayé plusieurs solutions pour revenir à normal non root Prompt. Mais cela n'a pas fonctionné sauf la solution de @ user837048.

root@m0:/ # stop adbd && setprop service.adb.root 0 && start adbd &
[1] 32137
root@m0:/ #
$

Cela pourrait vous faire sortir de Adb Prompt À l'invite normale. Maintenant, connectez-vous à nouveau.

$ adb Shell
shell@m0:/ $

bien .. vous êtes non root

2
Jasim Muhammed

Pour des étapes rapides, vérifiez simplement résumé. Si vous êtes intéressé à connaître les détails, continuez à lire ci-dessous.

adb est un démon. Faire ps adb on peut voir son processus.

Shell@grouper:/ $ ps adb
USER     PID   PPID  VSIZE  RSS     WCHAN    PC        NAME
Shell     133   1     4636   212   ffffffff 00000000 S /sbin/adbd

Je viens de vérifier quelles autres propriétés il utilise lorsque adb s’exécute en tant que root et utilisateur.

mode utilisateur adb:

Shell@grouper:/ $ getprop | grep adb                                         
[init.svc.adbd]: [running]
[persist.sys.usb.config]: [mtp,adb]
[ro.adb.secure]: [1]
[sys.usb.config]: [mtp,adb]
[sys.usb.state]: [mtp,adb]

mode racine adb:

Shell@grouper:/ # getprop | grep adb                                         
[init.svc.adbd]: [running]
[persist.sys.usb.config]: [mtp,adb]
[ro.adb.secure]: [1]
[service.adb.root]: [1]
[sys.usb.config]: [mtp,adb]
[sys.usb.state]: [mtp,adb]

On peut voir ça service.adb.root est une nouvelle variable prop qui est apparue lorsque nous avons créé adb root.

Donc, pour revenir à adb en tant qu'utilisateur depuis la racine, je suis allé de l'avant et j'ai

setprop service.adb.root 0

Mais cela n'a rien changé.

Ensuite, je suis allé de l'avant et j'ai tué le processus (avec l'intention de le relancer). Le processus pid de adbd dans mon appareil est 133

kill -9 133

J'ai quitté Shell automatiquement après avoir tué le processus.

J'ai fait adb Shell encore une fois, c'était en mode utilisateur.

SOMMAIRE:

Nous avons donc 3 étapes très simples.

  1. Entrez adb Shell en tant que racine.
  2. setprop service.adb.root 0
  3. kill -9 (pid of adbd)

Après ces étapes, entrez de nouveau dans le shell avec adb Shell et vous êtes de retour sur votre appareil en tant qu’utilisateur.

0
mk..