ADBに関する基本的な質問。
adb root
は、adbをルートとして再起動します。しかし、私が欲しいのは、しばらくしてからユーザーに再起動することです。
私は次を試しました:
adb kill-server
adb start-server
動作しません。
ps -A
-> adbのプロセス番号を書き留め、それを強制終了しました。これでも機能しませんでした。最後に、デバイスを再起動しています。ルートadbから一般的なadbに戻る方法はありますか?
ありがとうございました。
少し遅れて推測しますが、ここにそれがあります:「adb root」を使用した場合、次のメッセージが表示されます。
C:\>adb root
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
restarting adbd as root
ルートモードを終了するには、次を使用できます。
C:\>adb unroot
restarting adbd as non root
adb kill-server
およびadb start-server
は、PC側のadb
デーモンのみを制御します。 service.adb.root
によって行われたadb root
プロパティの変更を元に戻した後、デバイス自体でadbd
デーモンを再起動する必要があります。
~$ 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)
シェルを取り戻すためにこれを試してください:
adb Shell(root)と入力します。次に、以下のコマンドを入力します。
stop adbd && setprop service.adb.root 0 && start adbd &
このコマンドは、stop adbd
、adbd
が成功した場合はsetprop service.adb.root 0
、stop
ped、最後にstart adbd
プロパティが正常に設定されるとre.root
になります。 0.最後の&
のおかげで、これはすべてバックグラウンドで行われます。
@ user837048の回答にもう少し説明を加えたいと思います。ファームウェアCyanogenMod 11
およびKitKat
を使用しているルートのOSX YosemiteおよびGalaxy S3では、Enable
およびDisable
ルートプロンプトに以下の手順を実行しました。
以下を確認してください
システム上
Android SDK
がインストールされており、バイナリファイルへのパスが設定されていることを確認してください。シェルでwhich adb
と入力します。ある程度の結果が得られるはずです。 $ which adb /Applications/Android Studio.app/sdk/platform-tools/adb
携帯で
ON
Apps and ADB
設定にDeveloper Options
が表示されない場合は、[設定]> [電話について]に移動します。 Build number
までスクロールダウンし、そこを7回タップします。私はその狂気を知っています。しかし、私はそれがうまくいくと信じています:D
携帯電話をUSBケーブルで接続します。 computer's
端子に入力します
$ adb Shell
同様のプロンプトが表示されます。接続が信頼できるように、プロンプトがモバイルに表示されている場合は、「常に信頼」と「OK」をタップします
Shell@m0:/ $
今タイプ
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
あなたがnot root
シェルを終了すると、computer's Prompt
にフォールバックします
Shell@m0:/ $ exit
ルートを有効にします
$adb Shell
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
root@m0:/ #
すごい..あなたはrootです
root@m0:/ # id
uid=0(root) gid=0(root) context=u:r:Shell:s0
私はnormal non root Prompt
に戻るために多くの解決策を試みました。しかし、@ user837048のソリューション以外は機能しませんでした。
root@m0:/ # stop adbd && setprop service.adb.root 0 && start adbd &
[1] 32137
root@m0:/ #
$
これにより、Adb Prompt
から通常のプロンプトに戻ることができます。もう一度接続してください。
$ adb Shell
shell@m0:/ $
まあ..あなたは非ルートです
簡単な手順については、summaryをチェックしてください。詳細を知りたい場合は、以下をお読みください。
adbはデーモンです。 ps adb
を実行すると、そのプロセスを確認できます。
Shell@grouper:/ $ ps adb
USER PID PPID VSIZE RSS WCHAN PC NAME
Shell 133 1 4636 212 ffffffff 00000000 S /sbin/adbd
私は、adbがrootおよびユーザーとして実行されているときに、追加のプロパティ変数が使用しているものをチェックしました。
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]
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]
service.adb.root
は、adb rootを実行したときに表示された新しいprop変数であることがわかります。
だから、adbをrootからuserに戻すために、私は先に進み、これを0にした
setprop service.adb.root 0
しかし、これは何も変わりませんでした。
その後、先に進み、プロセスを強制終了しました(プロセスを再起動する目的で)。デバイスのpid
プロセスのadbd
は133
です
kill -9 133
プロセスを強制終了した後、シェルを自動的に終了しました。
ユーザーモードでadb Shell
をやり直しました。
SUMMARY:
したがって、3つの非常に簡単な手順があります。
(pid of adbd)
これらの手順の後、adb Shell
を使用してシェルに再入力するだけで、ユーザーとしてデバイスに戻ります。