5.1.1および6.0のAVDの場合、次のスクリプトをWindowsで使用しました。
set adb=adb -s emulator-5558
set arch=x64
set pie=
adb start-server
%adb% root
%adb% remount
rem %adb% shell mount -o remount,rw /system
%adb% shell setenforce 0
%adb% install common/Superuser.apk
%adb% push %arch%/su%pie% /system/bin/su
%adb% shell chmod 0755 /system/bin/su
%adb% push %arch%/su%pie% /system/xbin/su
%adb% shell chmod 0755 /system/xbin/su
%adb% shell su --install
%adb% shell "su --daemon&"
rem %adb% shell mount -o remount,ro /system
exit /b
SuperSUからのUPDATE.zipが必要です。それらを任意のフォルダに解凍します。上記の内容でbatファイルを作成します。必要なアーキテクチャおよびデバイスを指定し忘れないでください:set adb=adb -s emulator-5558
とset arch=x64
。Androidを5.0以上で実行している場合は、に変更set pie=
しset pie=.pie
ます。それを実行します。現在の実行の一時的なルートを取得します。
システムパーティションの再マウントでエラーが発生した場合は、コマンドラインからAVDを起動する必要があります。以下のAndroid 7の最初のステップを参照してください。
永続化する場合は、SuperSUのバイナリを更新し、デフォルトのsystem.imgの代わりに一時フォルダからsystem.imgを保存します。
結果の一時ルートをパーマネントに変換する方法
最初に-それはSuperSuに行きます。バイナリアップグレードを提供します。通常の方法で更新します。リブートを拒否します。
2番目-エミュレータにのみ関連します。同じAVD。つまり、システムイメージの変更は保存されません。自分で保管する必要があります。
すでにエミュレータごとに異なる手順があります。
AVDの場合、一時ファイルsystem.imgを見つけてどこかに保存し、エミュレータを起動するときに使用できます。
Windowsでは、%LOCALAPPDATA%\Temp\AndroidEmulator
にあり、次のような名前が付いています。TMP4980.tmp
ます。
それをavdデバイス(%HOMEPATH%\.android\avd\%AVD_NAME%.avd\
)のフォルダーにコピーし、名前をsystem.img
。
これで、通常ではなく、最初に使用されます。SDKのイメージが更新された場合、Trueになり、古いイメージになります。
この場合、これを削除する必要があります system.img
し、作成時に操作を繰り返す。
ロシア語のより詳細なマニュアル:http : //4pda.ru/forum/index.php?showtopic=318487&view=findpost&p=45421931
Android 7の場合、追加の手順を実行する必要があります。1.エミュレーターを手動で実行する必要があります。sdkフォルダーに移動しますsdk\tools\lib64\qt\lib
。このフォルダーエミュレーターから、次の-writable-system -selinux disabled
ようなオプションを指定して実行します。
F:\android\sdk\tools\lib64\qt\lib>F:\android\sdk\tools\emulator.exe -avd 7.0_x86 -verbose -writable-system -selinux disabled
再起動する必要があります adbd
ルートから:
adb -s emulator-5554 root
そしてシステムを再マウントします:
adb -s emulator-5554 remount
実行エミュレータごとに1回だけ寄付できます。そして、別の再マウントは書き込みモードを壊す可能性があります。このため、次のようなremountで他のコマンドを実行する必要はありません。mount -o remount,rw /system
。
別のステップは同じままです-バイナリをアップロードし、デーモンとしてバイナリを実行するなど。
ルートを持つAVD Android 7 x86の画像:
su
バイナリの実行時にPIEに関するエラーが表示される場合は、エミュレータに間違ったバイナリをアップロードします。su.pie
アーカイブ内で名前が付けられたバイナリをアップロードする必要がありますが、エミュレータではsu
、ではなくと名前を付ける必要がありますsu.pie
。