Come eseguire il root dell'emulatore Android (Android 7.1.1 / Nougat)
Sono lieto di informare la community di un modo più semplice per eseguire il root dell'emulatore Android (eseguito da Android SDK autonomo)
Requisiti :
Nota: SuperSU è ora obsoleto, ma questo metodo funziona ancora per eseguire il root dell'emulatore e verranno forniti più aggiornamenti per i metodi di rooting più recenti.
Istruzioni
Installa SuperSu.apk
Installa innanzitutto l'app SuperSu, trascina e rilascia (se esegui l'ultima versione dell'emulatore o esegui il sideload tramite adb adb –e install supersu.apk
)
Dopo averlo installato, quando lo esegui mostra una schermata come mostrato di seguito che indica "Non è installato alcun binario SU ...". Questo errore conferma semplicemente che il dispositivo non è ancora stato rootato.
Rendi scrivibile la partizione di sistema dell'emulatore
Come suggerisce, dobbiamo autorizzare l'emulatore a scrivere i file di sistema.
Digitare il seguente codice per eseguire ciò: emulator.exe –avd {emulator_name} –writable-system
Nota: vai alla cartella degli strumenti in cui è installato Android SDK e apri il prompt dei comandi premendo Maiusc e facendo clic con il tasto destro.
Push su binario nella directory di sistema
- Estrai il Recovery flashable.zip (contenente i binari di su di diverse architetture)
Importante! Usa solo il binario su che corrisponde alla tua architettura avd, ad esempio x86, arm ecc., E nota il percorso in cui hai estratto questi binari.
- Assicurati di eseguire adb come root e anche di doverlo rimontare. Basta inserire questi codici
adb root
adb remount
Ora è il momento di spingere il binario su:
Questo è il codice che ho usato con successo :adb -e push C:\%USERPROFILE%\Desktop\rootemu\x86\su.pie /system/bin/su
(non importa la mia posizione specifica di su binary, qualsiasi posizione è ok fintanto che non c'è spazio bianco)
Se fallisce, prova invece a spingere in questa directory /system/xbin/su
. Anche per gli emulatori che eseguono Android 5.1 e versioni precedenti utilizzare su
e nosu.pie
Modifica le autorizzazioni del binario su
- Ora facciamo un po 'di modifica delle autorizzazioni di su binary. Dobbiamo farlo nel dispositivo di emulazione tramite adb:
adb –e shell
su root
cd /system/bin
chmod 06755 su
Importante!! Prendi nota del percorso binario su (il mio è / system / bin)
- Impostare la
install
direttiva su binario su e impostare adaemon
Digita i codici:
su --install
e per configurare il demone:
su --daemon&
Importante!! Prendi nota della spaziatura
Impostazione di SELinux su Permissive (ovvero disattivazione di SE Linux)
- Infine, disattiva selinux tramite questo codice:
setenforce 0
È praticamente !! Apri l'app SuperSU e potrebbe essere necessario aggiornare i file binari, puoi utilizzare il metodo normale.
Apri qualsiasi app che richieda autorizzazioni SU solo per ricontrollare e in effetti SuperSU ti chiederà se desideri concederle su autorizzazioni.
Osservazioni
La maggior parte dei contenuti di riferimento era per le versioni precedenti di Android e quindi la ragione di diversi comandi e percorsi che ho modificato.
Riconoscimenti speciali;
Un ringraziamento speciale a Irvin H, il cui tutorial mi ha ispirato a creare questa guida dopo aver fallito innumerevoli volte, e anche dopo aver visto la necessità di molti utenti di eseguire il root anche dei loro emulatori. Spero che anche questo gioverà molto
Irvin H: Rooting dell'emulatore Android - su Android Studio 2.3 ((Android 4.4)
Aggiornare
Come commentato da SaAtomic,
Questo approccio è ancora praticabile con Android Studio 3.0.1
Dopo aver eseguito l'aggiornamento alla versione dell'emulatore 27.2.9
e versioni successive, la conservazione della radice è molto più semplice grazie alla funzione snapshot (se la copia del metodo system.img non funziona):
Idealmente è più come ibernare il dispositivo virtuale con la configurazione intatta, quindi tutto viene preservato.
istantanee
Ora puoi salvare più istantanee AVD per una determinata configurazione del dispositivo e scegliere quale delle istantanee salvate caricare quando avvii l'emulatore. Avviare un dispositivo virtuale caricando un'istantanea è molto simile a riattivare un fisico da uno stato di sospensione, anziché avviarlo da uno stato spento.
Ciò implica che l'unico requisito per avviare l'emulatore è l'aggiunta del -writable-system
parametro al normale -avd [avdname]
comando dell'emulatore per avviare l'emulatore. (L'esecuzione dell'emulatore solo con l'emulatore -avd [avdname] non avvia la versione / copia rootata o può portare a qualche errore)
Testato a livello di API 22