Pode haver vários problemas diferentes quando você move o AVD ou SDK para outro diretório, substitui um SDK antigo por um novo ou, de alguma forma, corrompe o SDK.
Abaixo, descreverei todos os possíveis problemas que conheço e mostrarei várias maneiras de resolvê-los.
Obviamente, presumo que você tenha algum AVD criado e ele esteja localizado em C:\Users\<user_name>\.android\avd
(Windows) ou ~/.android/avd
(Linux / MacOS).
Se você se mudou .android
para outro local, defina a ANDROID_SDK_HOME
variável de ambiente como o caminho do diretório pai que contém o seu .android
e verifique se o Gerenciador do AVD encontrou com êxito o seu Dispositivo Virtual.
Verifique também os caminhos <user_home>/.android/avd/<avd_name>.ini
Estrutura do SDK incompleta / corrompida
PANIC: Cannot find AVD system path. Please define ANDROID_SDK_ROOT
PANIC: Broken AVD system path. Check your ANDROID_SDK_ROOT value
Esses 2 erros ocorrem se o emulador não conseguir encontrar o SDK ou se o SDK estiver quebrado.
Portanto, primeiro recomendo remover a ANDROID_SDK_ROOT
variável. Só é necessário quando o emulador está localizado fora do diretório SDK. Mas, em geral, seu emulador permanece dentro do diretório SDK. E, nesse caso, ele deve detectar o local do SDK automaticamente . Caso contrário, o SDK provavelmente tem uma árvore de arquivos incorreta. Faça o seguinte:
Verifique se o diretório SDK tem pelo menos estes 4 diretórios: emulator
, platforms
, platform-tools
, system-images
. É muito importante! Esses diretórios devem estar presentes. Se alguns deles não existirem, basta criar diretórios vazios.
Vá para <user_home>/.android/avd/<avd_name>
e abra config.ini
. Encontre a image.sysdir.1
propriedade. Aponta para o diretório, dentro do diretório SDK, que contém a imagem real do sistema. Verifique se esse diretório existe e contém arquivos como build.prop
, system.img
etc. Se não existir, abra o Gerenciador de SDK e faça o download das imagens do sistema exigidas pelo AVD (veja abaixo).
Se tudo estiver configurado corretamente, quando esses erros ANDROID_SDK_ROOT
devem desaparecer. Se não estiverem, agora você pode tentar configurar a ANDROID_SDK_ROOT
variável.
Pacotes necessários e HAXM não estão instalados
O próximo problema que você pode enfrentar é que o emulador começa a ser iniciado, mas desliga ou sai imediatamente. Isso provavelmente significa que você não possui todos os pacotes necessários instalados.
Outro erro possível é:
Não foi possível detectar automaticamente um binário ADB. Algumas funcionalidades do emulador não funcionarão até que um caminho personalizado para o ADB seja adicionado na página de configurações estendidas.
Portanto, para iniciar com êxito qualquer AVD, você deve ter certeza de que pelo menos esses pacotes estão instalados:
emulator (Android Emulator)
platform-tools (Android SDK Platform-Tools)
tools (Android SDK Tools)
E, como mencionei anteriormente, você deve instalar imagens do sistema que seu AVD está usando, por exemplo system-images;android-25;google_apis;x86
Observe que as versões mais recentes no SDK não têm um autônomo SDK Manager.exe
. Em vez disso, você deve usar o Android Studio ou tools\bin\sdkmanager.bat
(o Linux / MacOS provavelmente possui sh
arquivos).
Para listar todos os pacotes disponíveis, use sdkmanager --list
ousdkmanager --list --verbose
Para instalar pacotes, use sdkmanager <package1> <package2> ...
Também recomendo instalar o HAXM no seu sistema manualmente.
Os arquivos Qcow2 referem-se a imagens-base incorretas / inexistentes
O último problema que mencionarei acontece quando você está tentando mover o AVD ou SDK de um computador ou diretório para outro. Nesse caso, você pode receber esse erro:
qemu-system-i386.exe: -drive se = nenhum, verificação de sobreposição = nenhum, cache = inseguro, índice = 0, id = sistema, arquivo = C:\Users\<old_user_name>\.android\avd\<avd_name>
.
avd \ system.img.qcow2, somente leitura: Não foi possível abrir o arquivo de backup: Não foi possível abrir ' <old_sdk_dir>\system-images\android-22\google_apis\x86\system.img
': Argumento inválido
Existem 2 maneiras de corrigi-lo:
Se você não se importa com os dados que o AVD contém, basta excluir todos os qcow2
arquivos do diretório AVD (por exemplo, de <user_home>/.android/avd/<avd_name>
). Nesse caso, você obterá uma versão limpa do Android, como após uma reinicialização completa.
Se os dados no emulador forem importantes para você, abra todos os qcow2
arquivos um por um usando qualquer editor HEX (prefiro HxD ), localize o caminho de um img
arquivo base e altere-o para o correto no Overwrite
modo (para preservar o tamanho do arquivo). Em seguida, selecione o caminho e obtenha seu comprimento em hexadecimal (por exemplo 2F
). 2F
representa a barra ASCII /
. Coloque-o na posição 13
:
PS: Não tenho certeza, mas provavelmente existem alguns utilitários como o qemu-img, que permite definir uma imagem base diferente. Bem, para mim é mais fácil editar manualmente o binário.
Agora você provavelmente poderá iniciar com êxito o seu dispositivo virtual Android. Acredito que sim :)