Saya memiliki semua versi Android SDK (dari 1.5 hingga 2.3.3), dan saya mencoba banyak metode untuk mendapatkan root di emulator Android. Saya tidak menggunakan perangkat Android dan menguji semuanya pada emulator (AVD).
Saya perlu mendapatkan akses root di salah satu emulator Android untuk menggunakan fungsionalitas 'iptables' dan 'busybox'. Dan untuk menggunakan iptables saya harus memiliki akses root. Perintah 'su' minimal harus dijalankan di terminal emulator.
Saya juga menginstal z4root
aplikasi,
Tapi itu butuh waktu sangat lama dan tidak selesai rooting, dan macet. beberapa mengatakan bahwa jika kita menurunkan sistem ke bawah RC30, dengan cara ini kita bisa mendapatkan akses root. jika ini benar, lalu bagaimana melakukan ini? Saya menggunakan Linux dan OS Windows.
Tolong seseorang beri tahu saya metode apa pun untuk root emulator saya.
sumber
Jawaban:
Semua jawaban ini sangat rumit :)
sumber
adb root
hasil dalam "adbd tidak dapat berjalan sebagai root di build produksi". Apakah Anda menggunakan emulator tertentu? Harap berikan detail lebih lanjut.adb root
memberikan kesalahanadbd cannot run as root in production builds
, lihat stackoverflow.com/a/45668555/1682419 - Anda memerlukan "Gambar Sistem Google API" daripada "Gambar Sistem Google Play".Bagaimana cara root emulator Android (diuji pada Android 7.1.1 / Nougat)
Persyaratan :
Aplikasi SuperSU (chainfire) versi terbaru 2.82
Recovery flashable.zip (mengandung su binary)(Berikut ini adalahtautan cadangan alternatif yang disediakan oleh pengguna XDA Ibuprophen untuk ritsleting yang dapat di- flash jika tautan utama tidak berfungsi: Rilis zip yang dapat di-flash )Instruksi
Instal SuperSu.apk
Instal aplikasi SuperSu terlebih dahulu, cukup drag and drop (jika menjalankan versi emulator terbaru atau sideload melalui adb yaitu
adb -e install supersu.apk
)Setelah menginstalnya, ketika Anda menjalankannya akan muncul layar seperti ditunjukkan di bawah ini yang menunjukkan "Tidak ada biner SU yang diinstal ..". Kesalahan ini hanya mengkonfirmasi perangkat belum di-root.
Buat partisi sistem emulator dapat ditulis
Seperti yang disarankan, kita perlu memberi emulator izin untuk menulis file sistem.
Ketikkan kode berikut untuk melakukannya:
emulator -avd {emulator_name} -writable-system
Jika Anda memiliki lebih dari satu AVD, Anda bisa mendapatkan daftar avds dengan menggunakan perintah:
emulator -list-avds
Catatan: Navigasikan ke folder alat di mana Android SDK diinstal dan buka command prompt di sana dengan menekan shift dan mengklik kanan.
Mendorong su biner di direktori sistem
Penting! Hanya gunakan su binary yang cocok dengan arsitektur avd Anda, mis. X86, arm dll., Dan catat path tempat Anda mengekstrak binari ini.
adb root
adb remount
Sekarang saatnya untuk mendorong biner su:
Ini adalah kode yang berhasil saya gunakan :
adb -e push C:\Users\User1\Desktop\rootemu\x86\su.pie /system/bin/su
(tidak pernah ingat tentang lokasi spesifik saya binary su, lokasi apa pun boleh saja asalkan tidak ada ruang putih)
Catatan: Untuk mencari tahu
bin
atauxbin
melakukan di konsol sebelum:>adb shell
,>ls /system/xbin/su
Jika ini gagal coba ini mendorong ke direktori ini sebagai gantinya
/system/xbin/su
. Juga untuk emulator yang menjalankan Android 5.1 dan di bawah ini gunakansu
dan tidaksu.pie
Ubah izin binary su
adb -e shell su root cd /system/bin chmod 06755 su
Penting!! Perhatikan path su binary (milik saya adalah / system / bin)
install
direktif pada su binary dan mengatur adaemon
Ketikkan kode:
su --install
dan untuk mengatur daemon:
su --daemon&
Penting!! Perhatikan jarak
Mengatur SELinux ke Permissive (yaitu mematikan SE Linux)
setenforce 0
Buka aplikasi SuperSU dan mungkin meminta untuk memperbarui binari, Anda dapat menggunakan metode Normal.
Catatan: Jika Anda mengalami bootloop, jangan memperbarui binari, gunakan saja apa adanya.
Cukup banyak !!
Buka aplikasi yang membutuhkan izin SU hanya untuk mengecek dan memang SuperSU bertanya apakah Anda ingin memberikannya izin.
Untuk mendapatkan pembaruan tetap dari binary su (menggunakan metode Normal), kemudian salin system.img dari direktori temp (
Users\AppData\Local\Temp\Android Emulator
file biasanya bernama acak misalnya1359g.tmp
dengan ukuran besar) dan ganti defaultsystem.img
.Perbarui :
Saya telah mencatat lebih mudah untuk mendapatkan gambar sistem sementara di Linux, daripada Windows. Anda dapat mencoba menggunakan gambar foto.
Pembaruan 4 Agustus 2018
Dengan munculnya emulator
27.3.x
sekarang membuat menjaga root lebih mudah melalui fitur snapshot (jika menyalinsystem.img
metode ini tidak berfungsi):Idealnya lebih seperti hibernarig perangkat virtual dengan konfigurasi utuh, maka semuanya dilestarikan.
Jepretan
Ini menyiratkan satu-satunya persyaratan untuk memulai emulator adalah menambahkan
-writable-system
parameter keemulator -avd [avdname]
perintah normal untuk memulai emulator. ( Menjalankan emulator hanya denganemulator -avd [avdname]
tidak meluncurkan versi root / menyalin atau dapat menyebabkan beberapa kesalahan )Diuji pada API level 22
Juga untuk masalah bootloop lihat posting lain: Android Emulator: Bagaimana cara menghindari boot loop setelah rooting? dan pembaruannya.
Catatan
Sebagian besar konten dalam referensi adalah untuk versi android yang lebih lama dan karenanya alasan untuk berbagai perintah dan jalur yang saya modifikasi.
Ucapan Terima Kasih;
Irvin H: Rooting emulator android -pada Android Studio 2.3 ((Android 4.4)
Akses root AVD Android gagal.
sumber
su --install && su --daemon&
emulator, diikuti olehsetenforce 0
untuk mendapatkan root. Apakah Anda tahu perbaikan permanen untuk root saat reboot?Berikut adalah daftar perintah yang harus Anda jalankan ketika emulator sedang berjalan, saya menguji solusi ini untuk AVD di Android 2.2:
Diasumsikan bahwa su binary terletak di direktori kerja. Anda dapat menemukan su dan superuser di sini: http://forum.xda-developers.com/showthread.php?t=682828 . Anda perlu menjalankan perintah ini setiap kali meluncurkan emulator. Anda dapat menulis skrip yang meluncurkan emulator dan root.
sumber
-partition-size
opsi untuk menentukan ukuran partisi. Coba luncurkan emulator Anda dengantools/emulator -avd MyAndroidVirtualDeviceName -partition-size 256
adb shell mount -o rw,remount -t yaffs2 /dev/block/mtdblock03 /system
dengan:adb root
adb remount
Untuk AVD dengan 5.1.1 dan 6.0 saya menggunakan skrip berikutnya di windows:
Butuh UPDATE.zip dari SuperSU. Buka kemasannya ke folder apa pun. Buat file bat dengan konten di atas. Jangan lupa tentukan arsitektur dan perangkat yang diperlukan:
set adb=adb -s emulator-5558
danset arch=x64
. Jika Anda menjalankan Android di atas atau sama dengan 5.0, ubahset pie=
keset pie=.pie
. Menjalankannya. Anda mendapatkan root sementara untuk menjalankan saat ini.Jika Anda mendapat kesalahan pada partisi sistem remount maka Anda perlu memulai AVD dari baris perintah. Lihat langkah pertama di bawah ini untuk Android 7.
Jika Anda ingin membuatnya terus-menerus - perbarui biner di SuperSU dan simpan system.img dari folder temp sebagai ganti dari system.img default.
Cara mengonversi root sementara yang dihasilkan secara permanen
Pertama - pergi ke SuperSu. Ini menawarkan peningkatan biner. Perbarui dengan cara biasa. Reboot tolak.
Kedua - hanya relevan untuk emulator. AVD yang sama. Intinya adalah bahwa perubahan pada gambar sistem tidak akan disimpan. Anda perlu menyimpannya untuk diri mereka sendiri.
Sudah ada instruksi yang bervariasi untuk emulator yang berbeda.
Untuk AVD Anda dapat mencoba menemukan file system.img sementara, simpan di suatu tempat dan gunakan ketika Anda memulai emulator.
Di Windows terletak di
%LOCALAPPDATA%\Temp\AndroidEmulator
dan memiliki nama sepertiTMP4980.tmp
.Anda menyalinnya ke folder, perangkat avd (
%HOMEPATH%\.android\avd\%AVD_NAME%.avd\
), dan diganti namanya menjadisystem.img
.Sekarang akan digunakan di awal, bukan yang biasa. Benar jika gambar di SDK diperbarui, itu akan memiliki yang lama.
Dalam hal ini, Anda harus menghapus ini
system.img
, dan ulangi operasi pada pembuatannya.Manual lebih rinci dalam bahasa Rusia: http://4pda.ru/forum/index.php?showtopic=318487&view=findpost&p=45421931
Untuk android 7 Anda perlu menjalankan langkah-langkah tambahan: 1. Perlu menjalankan emulator secara manual. Buka folder SDK
sdk\tools\lib64\qt\lib
. Jalankan dari folder ini emulator dengan opsi-writable-system -selinux disabled
Suka ini:Anda perlu memulai ulang
adbd
dari root:adb -s emulator-5554 root
Dan sistem remount:
Ini dapat disumbangkan hanya sekali per menjalankan emulator. Dan remount lain dapat merusak mode tulis. Karena itu, Anda tidak perlu menjalankan perintah lain dengan remount, seperti
mount -o remount,rw /system
.Langkah-langkah lain tetap sama - unggah biner, jalankan biner sebagai daemon dan sebagainya.
Gambar dari AVD Android 7 x86 dengan root:
Jika Anda melihat kesalahan tentang PIE pada eksekusi
su
biner - maka Anda mengunggah ke emulator salah biner. Anda harus mengunggah biner bernamasu.pie
di dalam arsip, tetapi pada emulator itu harus dinamaisu
, bukansu.pie
.sumber
update binary in SuperSU and store system.img from temp folder as replace of default system.img.
Saya percaya bahwa cara termudah adalah membuat alias untuk perintah
sh
, misalnyaDiuji pada Android Emulator 3.0 dan lebih tinggi.
sumber
mount: '/system' not in /proc/mounts
Di sini paket saya dengan semua yang Anda butuhkan. Atau Anda dapat menggunakan skrip ini:
sumber
Saya baru saja mengganti dan menetapkan atribut untuk su ke ~ / Android / SDK / sistem-gambar / android-22 / google_apis / x86 / system.img dan sekarang di android 5 Saya selalu memiliki root bahkan untuk sistem baru, cukup untuk menginstal SuperSu. apk
setelah itu, SuperSu.apk melihat root. Tapi saya tidak memperbarui file biner
sumber
Saya menggunakan bagian dari metode dari solusi di atas; Namun, mereka tidak bekerja sepenuhnya. Pada versi terbaru Andy, ini bekerja untuk saya:
Pada Andy (Root Shell) [Untuk mendapatkan, klik kanan ikon HandyAndy dan pilih Term Shell]
Di dalam shell, jalankan perintah ini:
Kemudian, instal SuperSU dan instal SU binary. Ini akan menggantikan biner SU yang baru saja kita buat. (Opsional) Hapus SuperSU dan instal Superuser oleh CWM. Instal biner su lagi. Sekarang, root berfungsi!
sumber
Saya mencoba banyak dari saran di atas, termasuk SuperSU dan tidak dapat membuatnya bekerja tetapi menemukan sesuatu yang jauh lebih sederhana yang berfungsi untuk tujuan saya. Dalam kasus saya, saya hanya ingin dapat menjalankan sqlite pada command prompt. Saya hanya memutar emulator dengan versi Android yang lebih lama (Lollipop) dan mendapatkan akses root segera.
sumber
Saya menemukan bahwa emulator API 23 x86_64 default telah di-root secara default.
sumber