Potrebbero esserci diversi problemi quando si sposta l'AVD o l'SDK in un'altra directory o si sostituisce un vecchio SDK con uno nuovo o in qualche modo si danneggia l'SDK.
Di seguito descriverò tutti i possibili problemi che conosco e ti fornirò diversi modi per risolverli.
Ovviamente presumo che abbiate creato qualsiasi AVD, che si trova in C:\Users\<user_name>\.android\avd
(Windows) o ~/.android/avd
(Linux / MacOS).
Se ti sei spostato .android
in un'altra posizione, imposta la ANDROID_SDK_HOME
variabile di ambiente sul percorso della directory principale contenente il tuo .android
e assicurati che AVD Manager abbia trovato correttamente il tuo dispositivo virtuale.
Controlla anche i percorsi <user_home>/.android/avd/<avd_name>.ini
Struttura SDK incompleta / danneggiata
PANIC: Cannot find AVD system path. Please define ANDROID_SDK_ROOT
PANIC: Broken AVD system path. Check your ANDROID_SDK_ROOT value
Questi 2 errori si verificano se l'emulatore non riesce a trovare l'SDK o se l'SDK è rotto.
Quindi, prima di tutto consiglio di rimuovere la ANDROID_SDK_ROOT
variabile. È necessario solo quando l'emulatore si trova al di fuori della directory SDK. Ma in generale, l'emulatore rimane all'interno della directory SDK. E in questo caso deve rilevare automaticamente la posizione dell'SDK . In caso contrario, probabilmente l'SDK ha un filetree errato. Si prega di fare quanto segue:
Verificare che la directory SDK ha almeno questi 4 directory: emulator
, platforms
, platform-tools
, system-images
. È molto importante! Queste directory devono essere presenti. Se alcuni di essi non esistono, crea semplicemente dir vuoti.
Vai a <user_home>/.android/avd/<avd_name>
e apri config.ini
. Trova la image.sysdir.1
proprietà. Punta alla directory, all'interno della directory SDK, che contiene l'immagine di sistema effettiva. Assicurarsi che questa directory esista e contenga file come build.prop
, system.img
ecc. In caso contrario, è necessario aprire SDK Manager e scaricare le immagini di sistema richieste dall'AVD (vedere di seguito).
Se tutto è impostato correttamente, quando questi errori ANDROID_SDK_ROOT
devono essere spariti. In caso contrario, ora puoi provare a impostare la ANDROID_SDK_ROOT
variabile.
I pacchetti richiesti e HAXM non sono installati
Il prossimo problema che potresti incontrare è che l'emulatore inizia ad avviarsi, ma si blocca o si chiude immediatamente. Ciò significa probabilmente che non hai installato tutti i pacchetti richiesti.
Un altro possibile errore è:
Impossibile rilevare automaticamente un binario ADB. Alcune funzionalità dell'emulatore non funzioneranno finché non viene aggiunto un percorso personalizzato ad ADB nella pagina delle impostazioni estese.
Quindi, per avviare correttamente qualsiasi AVD devi essere sicuro che almeno questi pacchetti siano installati:
emulator (Android Emulator)
platform-tools (Android SDK Platform-Tools)
tools (Android SDK Tools)
E come ho già detto, è necessario installare immagini di sistema utilizzate dall'AVD, ad esempio system-images;android-25;google_apis;x86
Si noti che le versioni più recenti su SDK non hanno un sistema autonomo SDK Manager.exe
. Invece di esso devi usare Android Studio o tools\bin\sdkmanager.bat
(Linux / MacOS probabilmente hanno sh
file).
Per elencare tutti i pacchetti disponibili usare sdkmanager --list
osdkmanager --list --verbose
Per installare i pacchetti usare sdkmanager <package1> <package2> ...
Inoltre consiglio di installare manualmente HAXM sul tuo sistema.
I file Qcow2 si riferiscono a immagini di base errate / inesistenti
L'ultimo problema che menzionerò si verifica quando si tenta di spostare AVD o SDK da un computer o una directory a un altro. In questo caso potresti ricevere questo errore:
qemu-system-i386.exe: -drive if = none, overlap-check = none, cache = unsafe, index = 0, id = system, file = C:\Users\<old_user_name>\.android\avd\<avd_name>
.
avd \ system.img.qcow2, sola lettura: impossibile aprire il file di backup: impossibile aprire ' <old_sdk_dir>\system-images\android-22\google_apis\x86\system.img
': argomento non valido
Esistono 2 modi per risolverlo:
Se non ti interessano i dati contenuti nell'AVD, elimina tutti i qcow2
file dalla directory AVD (ad es. Da <user_home>/.android/avd/<avd_name>
). In questo caso otterrai una versione pulita di Android, come dopo un hard reset.
Se i dati sull'emulatore sono importanti per te, quindi apri tutti i qcow2
file uno per uno utilizzando qualsiasi editor HEX (preferisco HxD ), trova il percorso di un img
file di base e modificalo in quello corretto nella Overwrite
modalità (per preservare il dimensione del file). Quindi selezionare il percorso e ottenere la sua lunghezza in esadecimale (ad es 2F
.). 2F
rappresenta la barra ASCII /
. Mettilo in posizione 13
:
PS: Non sono sicuro, ma ci sono probabilmente alcuni programmi di utilità come qemu-img che consentono di impostare un'immagine di base diversa. Bene, per me è più semplice modificare manualmente il binario.
Ora probabilmente sarai in grado di avviare correttamente il tuo dispositivo virtuale Android. Lo spero :)