web-dev-qa-db-ja.com

adb Shell suは機能しますが、adb rootは機能しません

ロック解除したGalaxy S3(SGH-T999)を根付かせました

さて、adb rootをWindowsのコマンドプロンプトから実行しようとしていますが、adbd cannot run as root in production buildsエラーが発生しています。それで、私が最初にチェックしたのは私の電話が本当に根付いているかどうかでしたか?

そこで私は以下を試しました:

コマンドプロンプトを開く

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

しかし、adb rootを実行すると、adbd cannot run as root in production buildsエラーが発生します。それで、私は私が上でしたことを超えていくつかの追加のことをしなければならないかもしれないと思いました。私は以下のSO質問ですべての解決策を試しました。

上記のどれも私のために働きませんでした。彼らがすることはShellの中のROOTアクセスを与えることです。シェルに入らずにさまざまなadbコマンドを実行できるように、adb rootを機能させたい。

57
rumit patel

一部の開発者向けのROMでは、設定>開発者オプション>ルートアクセスルートアクセスを有効にすることができます。その後adb rootが利用可能になります。残念ながら、市場に出ているほとんどのストックROMではうまくいきません。

22
NgaNguyenDuy

設計上adb rootコマンドは開発ビルドでのみ機能します(つまり、デフォルトでro.debuggable=1を持つengおよびuserdebug)。そうでなければ根ざしたデバイスでadb rootコマンドを有効にするには、以下のファイルの1つにro.debuggable=1行を追加するだけです。

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

デフォルトでadb Shellrootから始める場合は、ro.secure=0を追加します。

代わりに、修正されたadbdバイナリを使用することもできます(これはro.debuggableをチェックしません)。

から 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.
18
Alex P.

私は根強いサムスンギャラクシートレンドプラス(GT - S7580)を持っています。

'adb root'を実行すると、 'adbdをプロダクションビルドでrootとして実行できない'というエラーが表示されます。

[開発者向けオプション] - > [ルートアクセス]を持つデバイスの場合は、「(ADBのみ)」を選択してデバイスへのadbルートアクセスを提供します( NgaNguyenDuy で推奨)。

それから で解決策に従ってコマンドを実行してみてください。ADBを介してrootとしてスクリプトを起動します 。私の場合は、 'netcfg rndis0 dhcp'コマンドを実行したいだけなので、次のようにしました。

adb Shell "su -c netcfg rndis0 dhcp"

この方法でそれを実行している間あなたが間違いを犯しているかどうか確認してください。

それでも機能しない場合は、デバイスを正しく起動したかどうかを確認してください。それでもうまくいかない場合は、「adb root」を機能させるための Cyanogen Mod などのカスタムROMをインストールしてみてください。

8
Antony

私はADBシェルでエンターSPモードに使用します

adbシェル "su"

6
Samuel Ivan

Boot.img/sbin /フォルダ内のadbdバイナリをsu対応のバイナリに置き換える必要があります。 default.propも編集する必要があります。

Samsungはこれを他のベンダーよりも困難にしているようだ。私はあなたが試すことができるいくつかのadbdバイナリを持っています、しかしそれは新しいバイナリでboot.imgを逆コンパイルして再コンパイルすることの知識を必要とするでしょう。また、ブートローダがロックされているのであれば、これは起こりません。

また、ChainfireはPlayストアでadbd root権限を許可するアプリを持っています。 https://play.google.com/store/apps/details?id=eu.chainfire.adbd&hl=ja

最後に、あなたがSUパーミッションでwindowsスクリプトを書き込もうとしているなら、あなたは次のコマンドスタイルを使ってこれを購入することができます...しかし、あなたは少なくとも(パーフェクト)SUパーミッションを走らせました。 。

adbシェル "su -c ls" <-list作業ディレクトリをsu権限でリストします。 adbシェル "su -c echo anytext> /data/test.file"

これらはほんの一例です。あなたが達成しようとしていることを具体的に述べるならば、私はより具体的な助言を与えることができるかもしれません

- スケスラー

6
scrosler

私はエミュレータを根絶しようとしたときにこの問題に遭遇しました、私はそれがグーグルプレイを持っていたNexus 5xエミュレータを実行していたためであることがわかりました。グーグルプレイとadb rootを持っていなかった別のエミュレータを作成してあなたのためにデバイスを根絶するでしょう。これが誰かに役立つことを願っています。

4

ADBrootとして実行する必要がある場合は、AndroidカスタムROMをインストールするのが最も迅速で簡単な方法であり、最も人気があるのはCyanogenModRoot Accessへのrootアクセスを許可することを選択できる開発者オプションメニューのapps and ADBオプション。以前CMを使用していましたが、開発されていないため、いくつかのソリューションを探してみました。 CyanogenModはブロートウェアを持たないため、依然として優れた代替手段です。

友人から見つけた1つの代替手段は、ここから試すことができるadbd insecureアプリを使用することです: https://forum.xda-developers.com/showthread.php?t=168759 。私の場合、Androidカスタムカーネルで動作しますが、AndroidストックROM(バニラAndroidのみ)では動作しません。 Android ROMのboot.imgの変更など、他の代替手段を試すこともできます。

0
warfreak92