私はすべてのAndroid SDKバージョン(1.5から2.3.3まで)を持っており、Androidエミュレータでルートを取得するために多くの方法を試してみました。私はAndroidデバイスを使用しておらず、エミュレータ(AVD)上ですべてをテストしています。
iptables' と busybox' の機能を使用するために、いずれかのAndroidエミュレータでルートアクセスを取得する必要があります。そして、iptablesを使用するために、私はroot権限を持っている必要があります。少なくとも 'su' コマンドはターミナルエミュレータで実行される必要があります。
また、z4root
というアプリケーションをインストールしました。
しかし、非常に長い時間がかかり、root化が完了せず、立ち往生してしまいます。ある人は、システムをRC30以下にダウングレードすれば、rootアクセスが可能になると言っています。私はLinuxとWindowsの両方のOSを使用しています。
誰か私のエミュレータをroot化する方法を教えてください。
Androidエミュレーターをルートする方法(Android 7.1.1 / Nougatでテスト済み)。
要件:
-[SuperSUアプリ(チェーンファイア)最新バージョン2.82][1]。
-< strike> Recovery flashable.zip(su binaryを含む)< / strike>(XDAユーザー[Ibuprophen][3]が提供する代替バックアップリンクは、フラッシュ可能なジップの場合メインリンクが機能していません:[フラッシュ可能なジップリリース][4])。
指示。
1。 SuperSu.apkをインストールします。
-最初にSuperSuアプリをインストールし、ドラッグアンドドロップするだけです(最新のエミュレーターバージョンを実行している場合、またはadbを介してサイドロードする場合、つまり adb -e supersu.apk
をインストールします)。
-インストール後、実行すると、以下に示す「SUバイナリがインストールされていません。.」。 このエラーは、デバイスがまだルーティングされていないことを確認するだけです。
。。
----------。
2。 エミュレータのシステムパーティションを書き込み可能にします。
-それが示唆するように、私たちはエミュレーターにシステムファイルを書く許可を与える必要があります。
-これを実行するには、次のコードを入力します: emulator.exe -avd {emulator_name} -writable-system
。
注:Android SDKがインストールされている tools フォルダーに移動し、Shiftキーを押しながら右クリックしてコマンドプロンプトを開きます。。
----------。
3。 システムディレクトリでsuバイナリを押す。
-回復を抽出するflashable.zip(さまざまなアーキテクチャのスーバイナリを含む)。
重要です。! x86、アームなど、avdアーキテクチャに一致するsuバイナリのみを使用してください。.、そしてこれらのバイナリを抽出したパスに注意してください。。
-ルートとしてadbを実行していることを確認してください。また、再マウントする必要があります。 これらのコードを入力してください。
adb root
。
adb remount
。
今度はsuバイナリを押す時です:
これは私が正常に使用したコードです: adb -e push C:\ Users \ User1 \ Desktop \ rootemu \ x86 \ su.pie / system / bin / su
。
(私の特定の場所のsuバイナリについては気にしないでください。空白がない限り、どの場所でも大丈夫です)。
注:「bin」または「xbin」を理解するには、コンソールで次のことを行います。 adbシェル
、> ls / system / xbin / su
。
これが失敗した場合は、代わりにこのディレクトリに / system / xbin / su
を押してみてください。 また、Android 5.1以下を実行しているエミュレーターの場合は、「su.pie」ではなく「su」を使用します。
----------。
4。 suバイナリのアクセス許可を変更します。
-次に、suバイナリの許可を少し変更しましょう。 これは、adb:を介してエミュレータデバイスで実行する必要があります。
adb -eシェル。 su root。 cd / system / bin。 chmod 06755 su
。
重要です。!! suバイナリパスに注意してください(鉱山は/ system / bin)。
----------。
5。 suバイナリに「インストール」ディレクティブを設定し、「デーモン」を設定します。
コードを入力してください:
su --install
。
そしてデーモンをセットアップするために:
su --daemon&
。
重要です。!! 間隔に注意してください。
----------。
6。 SELinuxを許可に設定する(つまり、SE Linuxをオフにする)。
-最後に、このコードを使用してselinuxをオフにします。
setenforce 0
。
----------。
7。
SuperSUアプリを開くと、バイナリの更新が求められる場合があります。通常の方法を使用できます。
注:ブートループを経験している場合は、バイナリを更新せず、そのまま使用してください。
----------。
それでおしまい。!!
再確認するためだけにSU許可を必要とするアプリケーションを開き、実際にSuperSUが許可を付与するかどうかを尋ねます。
。。
rootを永続的に更新するsuバイナリ(通常の方法を使用)にするには、tempディレクトリ( Users \ AppData \ Local \ Temp \ Android Emulator
)からsystem.imgをコピーします。ファイルは通常、ランダムに名前が付けられます。サイズ)、デフォルトの system.img
を置き換えます。
更新:
Linuxでは、Windowsよりも一時的なシステムイメージを取得する方が簡単だと指摘しました。 スナップショット画像を使用してみてください。
エミュレータ 27.3.x
の出現により、スナップショット機能によりルートの保存がはるかに簡単になりました( system.img
メソッドのコピーが機能しない場合)。
理想的には、構成が損なわれていない仮想デバイスをhibernarigに似ているため、すべてが保持されます。
スナップショット。
これで、特定のデバイスに複数のAVDスナップショットを保存できます。 設定し、保存したスナップショットを選択して、ロードします。 エミュレーターを起動します。 スナップショットをロードして仮想デバイスを起動します。 起動するのではなく、睡眠状態から身体を目覚めさせるようなものです。 電源がオフの状態からです。
これは、エミュレーターを起動するための唯一の要件が、エミュレーターを起動するための通常の「エミュレーター-avd [avdname]」コマンドに「-書き込み可能システム」パラメーターを追加することを意味します。 ( emulator -avd [avdname]
だけでエミュレーターを実行しても、ルート化されたバージョン/コピーが起動しないか、エラーが発生する可能性があります)。
APIレベル22でテスト済み< / sup>。
また、ブートループの問題については、次の投稿を参照してください。Androidエミュレーター:ルート後にブートループを回避する方法?とその更新。
備考。
参照されているほとんどのコンテンツは古いAndroidバージョン用であったため、変更したさまざまなコマンドとパスの理由がありました。
謝辞; 。
-Irvin H:Androidエミュレーターの起動-Android Studio 2.3((Android 4.4)。
[1]:https://play.google.com/store/apps/details?id = eu.chainfire.supersu。
[3]:https://forum.xda-developers.com/member.php?u = 4828250。 [4]:https://androidfilehost.com/?w = files& flid = 154643。
エミュレータの実行中に実行しなければならないコマンドのリストです。私は、Android 2.2上のavdのためにこのソリューションをテストします。
adb shell mount -o rw,remount -t yaffs2 /dev/block/mtdblock03 /system
adb push su /system/xbin/su
adb shell chmod 06755 /system
adb shell chmod 06755 /system/xbin/su
suバイナリが作業ディレクトリにあることが前提です。su と superuser はこちら : http://forum.xda-developers.com/showthread.php?t=682828。 エミュレータを起動するたびに、これらのコマンドを実行する必要があります。エミュレータを起動し、root化するスクリプトを書くことができます。
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を置き換える形でtempフォルダからsystem.imgを保存してください。
**一時的なルートに変換する方法
まず-SuperSuに行く。バイナリアップグレードを提供してくれます。通常の方法でアップデートします。リブート却下。
2つ目 - エミュレータにのみ関係します。同じAVDです。要するに、システムイメージの変更は保存されないということです。あなたは自分自身のためにそれらを維持する必要があります。
すでに、さまざまなエミュレータのために異なる指示があります。
AVDの場合は、一時ファイルsystem.imgを見つけてどこかに保存し、エミュレータを起動したときに使用するようにするとよいでしょう。
Windowsでは、%LOCALAPPDATA%Temp\AndroidEmulator
にあり、TMP4980.tmp
のような名前を持っています。
それを avd device フォルダ (%HOMEPATH%.androidavd Filter%AVD_NAME%.avd
) にコピーして、名前を system.img
に変更します。
これで、通常ではなく、起動時に使用されるようになります。SDKのイメージが更新された場合、古いものを持つことになるので、True。
この場合、このsystem.img
を削除し、作成時の操作を繰り返す必要があります。
ロシア語の詳細マニュアル: http://4pda.ru/forum/index.php?showtopic=318487&view=findpost&p=45421931
アンドロイド7の場合、追加の手順が必要です。
1.エミュレータを手動で起動する必要があります。
Go to sdk folder sdktools' ╱╱Lib64 ╱Lib. このフォルダから、オプション
-writable-system -selinux disabled` を付けてエミュレータを実行します。
こんな感じ。
F:\sdktools
2.ルートから adbd
を再起動する必要があります。
adb -s emulator-5554 ルート
そして、システムを再マウントしてください。
adb -s emulator-5554 remount
エミュレータを起動するたびに1回だけ実行することができます。また、別のリマウントを行うと、書き込みモードが解除されます。このため、mount -o remount,rw /system
のようなリマウントを伴う他のコマンドを実行する必要がありません。
バイナリのアップロード、バイナリのデーモンとしての実行など、他の手順は同じです。
AVD Android 7 x86 を root で使用した場合の画像です。 AVD Android 7 x86 root版1です。
もし、su
バイナリの実行時にPIEに関するエラーが表示された場合、間違ったバイナリをエミュレータにアップロードしたことになります。アーカイブの中に su.pie
という名前のバイナリをアップロードする必要がありますが、エミュレータ上では su.pie
ではなく su
という名前にする必要があります。
この問題を解決する他の方法を試してください。
デフォルトのAndroidエミュレータの代わりにGenymotionを使用します。 デフォルトでルートされています。 それははるかに簡単で、通常の電話のようなものです。 個人的な使用は無料です。
デフォルトのAndroidエミュレータにXposedフレームワークをインストールしたいので、この質問を見つけました。 そのインストールには、カスタムリカバリ付きのルートとフラッシュが必要です(例:. TWRP)、どちらもデフォルトのAndroidエミュレーターでは困難です。 ついに私はGenymotionを使用し、すべて数分で完了しました。
suの属性を〜/ Android / Sdk / system-images / android-22 / google_apis / x86 / system.imgに置き換えて割り当てました。 Android 5では、新しいシステムでも常にrootを使用しているので、SuperSu.apkをインストールするだけで十分です。
Android 6 is necessary only
adb root
adb shell
>/system/xbin/su --daemon &
>setenfoce 0
その後、SuperSu.apkはrootを表示します。 ただし、バイナリファイルは更新しません。
ここ必要なものがすべて入った私のパック。 または、このスクリプトを使用できます。
echo on
set device=emulator-5554
set avd_name=
set adb=d:\Poprygun\DevTools\Android\Android-sdk\platform-tools\adb -s %device%
set emulator=d:\Poprygun\DevTools\Android\Android-sdk\emulator\emulator
set arch=x86
set pie=
echo Close all ANDROID emulators and press any key
pause
start %emulator% -avd Nexus_One_API_25 -verbose -writable-system
echo Wait until ANDROID emulator loading and press any key
pause
%adb% start-server
%adb% root
%adb% remount
%adb% shell setenforce 0
%adb% install D:\SuperSU\SuperSU.apk
%adb% push D:\SuperSU\su\%arch%\su.pie /system/bin/su
%adb% shell chmod 0755 /system/bin/su
%adb% push D:\SuperSU\su\%arch%\su.pie /system/xbin/su
%adb% shell chmod 0755 /system/xbin/su
%adb% shell su --install
%adb% shell "su --daemon&"
pause
exit /b
上記のソリューションのメソッドの一部を使用しました。ただし、完全には機能しませんでした。 Andyの最新バージョンでは、これは私にとってはうまくいきました。
Andy(Root Shell)で[取得するには、HandyAndyアイコンを右クリックして、[Term Shell]を選択します。
シェルの内部で、次のコマンドを実行します。
mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
cd /system/bin
cat sh > su && chmod 4775 su
次に、SuperSUをインストールし、SUバイナリをインストールします。 これは、作成したSUバイナリを置き換えます。 (オプション)。 SuperSUを削除し、CWMによるSuperuserをインストールします。 suバイナリを再度インストールします。 これで、ルートが機能します。!