Androidエミュレーターをルートにする方法(Android 7.1.1 / Nougat)
Androidエミュレータをルート化する簡単な方法(スタンドアロンのAndroid SDKから実行)をコミュニティにお知らせできることを嬉しく思います
要件:
注:SuperSUは非推奨になりましたが、このメソッドはエミュレーターをルート化するために引き続き機能し、新しいルート化メソッドの更新がさらに提供されます。
説明書
SuperSu.apkをインストールします
SuperSuアプリを最初にインストールし、ドラッグアンドドロップするだけです(最新のエミュレータバージョンを実行する場合、またはadbを介してサイドロードする場合などadb –e install supersu.apk
)。
インストール後、実行すると、「SUバイナリがインストールされていません。」を示す次のような画面が表示されます。このエラーは、デバイスがまだルート化されていないことを確認するだけです。
エミュレータのシステムパーティションを書き込み可能にする
注:Android SDKがインストールされているツールフォルダーに移動し、Shiftキーを押しながら右クリックしてコマンドプロンプトを開きます。
システムディレクトリにsuバイナリをプッシュする
- Recovery flashable.zipを抽出します(異なるアーキテクチャのsuバイナリを含む)
重要!avdアーキテクチャ(x86、armなど)に一致するsuバイナリのみを使用し、これらのバイナリを抽出したパスに注意してください。
- ルートとしてadbを実行していることと、再マウントする必要があることを確認してください。これらのコードを入力してください
adb root
adb remount
今度は、suバイナリをプッシュします。
これは私が正常に使用したコードです:adb -e push C:\%USERPROFILE%\Desktop\rootemu\x86\su.pie /system/bin/su
(suバイナリの特定の場所については気にせず、空白がない限りどの場所でも構いません)
これが失敗した場合は、代わりにこのディレクトリにプッシュしてみてください/system/xbin/su
。また、Android 5.1以下を実行しているエミュレーターsu
ではsu.pie
suバイナリのパーミッションを変更します
- 次に、suバイナリのパーミッションを少し変更してみましょう。これは、adbを介してエミュレーターデバイスで行う必要があります。
adb –e shell
su root
cd /system/bin
chmod 06755 su
重要!!suバイナリパスに注意してください(私の場合は/ system / binです)
- 設定
install
のsuバイナリとセットAに関する指令をdaemon
コードを入力します。
su --install
そして、デーモンをセットアップするため:
su --daemon&
重要!!間隔に注意してください
SELinuxをPermissiveに設定する(つまり、SE Linuxをオフにする)
- 最後に、次のコードでselinuxをオフにします。
setenforce 0
それはほとんどそれです!! SuperSUアプリを開くと、バイナリの更新を要求される場合があります。通常の方法を使用できます。
SU権限を必要とするアプリを開いて、ダブルチェックを行い、実際にSuperSUにsu権限を付与するかどうかを尋ねます。
備考
参照するコンテンツのほとんどは、古いAndroidバージョン用であり、したがって、変更したコマンドとパスが異なる理由です。
特別な謝辞;
Irvin Hに感謝します。IrvinHのチュートリアルは、私が何度も失敗した後、そして多くのユーザーがエミュレーターをルート化する必要性を感じた後、このガイドを作成するきっかけになりました。これも大きな利益になることを願っています
Irvin H:Androidエミュレータのルート化– Android Studio 2.3で((Android 4.4)
更新
SaAtomicがコメントしたように、
このアプローチは、Android Studio 3.0.1でも引き続き実行可能です
エミュレーターバージョン27.2.9
以上にアップグレードした後、スナップショット機能を使用してrootの保持がはるかに簡単になりました(system.imgメソッドのコピーが機能しない場合):
理想的には、設定を変更せずに仮想デバイスを休止状態にするのに似ているため、すべてが保持されます。
スナップショット
これで、特定のデバイス構成の複数のAVDスナップショットを保存し、エミュレーターの起動時に保存するスナップショットのどれを読み込むかを選択できます。スナップショットをロードして仮想デバイスを起動することは、電源がオフの状態から起動するのではなく、物理的にスリープ状態から起動することに似ています。
これは、エミュレーターを起動するための唯一の要件が、エミュレーターを起動する-writable-system
ための通常のエミュレーター-avd [avdname]
コマンドにパラメーターを追加することであることを意味します。(エミュレーター-avd [avdname]でエミュレーターを実行すると、ルート化されたバージョン/コピーが起動しないか、何らかのエラーが発生する可能性があります)
APIレベル22でテスト済み