adb shell suは機能しますが、adbrootは機能しません


92

ロック解除されたGalaxyS3(SGH-T999)をルート化しました

現在、adb rootWindowsコマンドプロンプトから実行しようとしていますが、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の質問ですべての解決策を試しました:

上記のどれも私にはうまくいきませんでした。彼らがすることは、シェルの内側にルートアクセスを与えることだけです。adb rootシェルに入らずにさまざまなadbコマンドを実行できるように作業したいと思います。


5
4.3以上のAndroidでは機能しません。suがありません。
drdrej 2015

回答:


35

デザインによってadb root開発におけるコマンドの動作(つまり、ビルドのみenguserdebugされていro.debuggable=1デフォルト)。したがって、ルート化さadb rootれていないデバイスでコマンドを有効にするには、次のファイルのいずれかに行を追加するだけです。ro.debuggable=1

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

必要に応じadb shellて起動するrootデフォルトで-その後、追加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.

9
上記のコンパイル済み実行可能ファイルはどこで入手できますか?
WaqasBukhary18年

3
指定したファイルにro.debuggableとro.secureの新しい値を追加しましたが、再起動するたびに上書きされ、変更しても効果はありません。
PatrykCzachurski19年

31

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


64
開発オプションに「ルートアクセス」オプションが表示されません。
アマルゴビヌス2016年

2
@Amalgovinus使用している部屋によって異なると思います。:)
NgaNguyenDuy 2016年

@NgaNguyenDuy使用しているROMを特定できますか?
ロブスターファイター

22

エミュレーターをルート化しようとしたときにこの問題が発生しました。これは、GooglePlayがインストールされているNexus5xエミュレーターを実行していたことが原因であることがわかりました。グーグルプレイを持たずadb root、あなたのためにデバイスをルート化する別のエミュレーターを作成しました。これが誰かを助けることを願っています。


どうすれば両方のエミュレーターを区別できますか?
サンジャイ

@Sanjay Android Virtual Device Managerを開くと、Playストアのタブが表示され、ルート化しようとしているデバイスにPlayストアアイコンが存在しないことを確認する必要があります。
Andrew Steinmetz

1
2020年、これは私を助けましたが、ルート化された電話なしでプレイストアが有効になっているデバイスでそれを行う方法が必要ですが、それが可能かどうかは
わかり

9

私はabdシェルでsuモードに入るために使用します

adbシェル「su」


2
Mac OSで、「/ system / bin / sh:su:notfound」エラーが発生します。何か提案がありますか?
Sachin G

@SachinGたぶんあなたは間違ったタイプの引用符を使用しましたか?これを実行してみてくださいadb shell "su -c whoami"
gkpln

@ gkpln3それでも同じエラーが発生します。/ system / bin / sh:su:見つかりません
Sachin G

8

私はSamsungGalaxy Trend Plus(GT-S7580)をルート化しています。

'adb root'を実行すると、同じ 'adbdを本番ビルドでrootとして実行できません'エラーが発生します。

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

次に、ADBを介してルートとしてスクリプト起動するの解決策に従ってコマンドを実行してみてください。私の場合、「netcfg rndis0 dhcp」コマンドを実行したかったのですが、次のようにしました。

adb shell "su -c netcfg rndis0 dhcp"

このように実行しているときに間違いがないか確認してください。

それでも機能しない場合は、デバイスを正しくルート化したかどうかを確認してください。それでもうまくいかない場合は、「adb root」が機能するように、CyanogenModなどのカスタムROMをインストールしてみてください。


7

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

サムスンはこれを他のベンダーよりも難しくしているようです。試すことができるadbdバイナリがいくつかありますが、boot.imgを新しいバイナリで逆コンパイルおよび再コンパイルする知識が必要になります。また、ロックされたブートローダーがある場合...これは起こりません。

また、Chainfireには、Playストアでadbdroot権限を付与するアプリがあります。 ます https //play.google.com/store/apps/details?

最後に、SU権限を持つWindowsスクリプトを作成しようとしている場合は、次のコマンドスタイルを使用してこの購入を行うことができます...ただし、少なくとも実行時にSU権限を(電話で)付与する必要があります。 。

adb shell "su -c ls" <-su権限を持つ作業ディレクトリを一覧表示します。adbシェル "su -c echo anytext> /data/test.file"

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

-スコスラー


4

adbdルートアクセスを有効にするためのコンパイルフラグ/オプションがあります:ALLOW_ADBD_ROOT=1

Android 9まで:adbdデバイスがそのフラグなしでコンパイルされている場合、起動時に常に権限が削除されるため、「adbroot」はまったく役に立ちません。私が電話をしてパッチを適用しなければなりませんでしたsetuid()setgid()setgroups()と能力は、私の電子ブックリーダー上の永久根ざしadbdを取得するには、バイナリの自分をドロップアウトします。

Android 10では、これが変更されました。電話/タブレットのロックが解除さro.boot.verifiedbootstate == "orange"れている場合()、どのような場合でもadbルートモードが可能です。


1

ADBとして実行する必要がある場合root、最も速くて簡単な方法はAndroidカスタムROMをインストールするCyanogenModことです。最も一般的なのはRoot Access、開発者向けオプションメニューにルートアクセスを許可するオプションがあることです。apps and ADB。以前はCMを使っていましたが、もう開発されていないので、解決策を探してみました。CyanogenModはブロートウェアを備えていないため、依然として優れた代替手段です。

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.