Może wystąpić kilka różnych problemów podczas przenoszenia AVD lub SDK do innego katalogu, wymiany starego SDK na nowy lub w jakiś sposób uszkodzony SDK.
Poniżej opiszę wszystkie możliwe problemy, które znam i podam kilka sposobów ich rozwiązania.
Oczywiście zakładam, że masz utworzony dowolny AVD i znajduje się on w C:\Users\<user_name>\.android\avd
(Windows) lub ~/.android/avd
(Linux / MacOS).
Jeśli przeniosłeś .android
się w inne miejsce, ustaw ANDROID_SDK_HOME
zmienną środowiskową na ścieżkę do katalogu nadrzędnego zawierającego Twój .android
i upewnij się, że Menedżer AVD pomyślnie znalazł Twoje urządzenie wirtualne.
Sprawdź także ścieżki w <user_home>/.android/avd/<avd_name>.ini
Niekompletna / uszkodzona struktura pakietu SDK
PANIC: Cannot find AVD system path. Please define ANDROID_SDK_ROOT
PANIC: Broken AVD system path. Check your ANDROID_SDK_ROOT value
Te 2 błędy występują, jeśli emulator nie może znaleźć zestawu SDK lub zestaw SDK jest uszkodzony.
Przede wszystkim polecam więc w ogóle usunąć ANDROID_SDK_ROOT
zmienną. Jest potrzebny tylko wtedy, gdy emulator znajduje się poza katalogiem SDK. Ale ogólnie twój emulator pozostaje w katalogu SDK. I w tym przypadku musi wykryć lokalizację SDK automatycznie . Jeśli tak nie jest, oznacza to, że prawdopodobnie Twój SDK ma niewłaściwe drzewo plików. Wykonaj następujące czynności:
Sprawdź, czy katalog SDK ma przynajmniej te 4 katalogi: emulator
, platforms
, platform-tools
, system-images
. To jest bardzo ważne! Te katalogi muszą być obecne. Jeśli niektórych z nich nie ma, po prostu stwórz puste książki.
Idź do <user_home>/.android/avd/<avd_name>
i otwórz config.ini
. Znajdź image.sysdir.1
nieruchomość. Wskazuje katalog wewnątrz katalogu SDK, który zawiera rzeczywisty obraz systemu. Upewnij się, że ten katalog istnieje i zawiera pliki, takie jak build.prop
, system.img
itp. Jeśli tak nie jest, musisz otworzyć Menedżera SDK i pobrać obrazy systemowe, których wymaga AVD (patrz poniżej).
Jeśli wszystko jest poprawnie skonfigurowane, kiedy te błędy ANDROID_SDK_ROOT
muszą zniknąć. Jeśli tak nie jest, możesz teraz spróbować ustawić ANDROID_SDK_ROOT
zmienną.
Wymagane pakiety i HAXM nie są zainstalowane
Następnym problemem, z którym możesz się spotkać, jest to, że emulator zaczyna się uruchamiać, ale zawiesza się lub natychmiast kończy pracę. To prawdopodobnie oznacza, że nie masz zainstalowanych wszystkich wymaganych pakietów.
Innym możliwym błędem jest:
Nie można automatycznie wykryć pliku binarnego ADB. Niektóre funkcje emulatora nie będą działać, dopóki niestandardowa ścieżka do ADB nie zostanie dodana na stronie ustawień rozszerzonych.
Tak więc, aby pomyślnie uruchomić dowolny AVD, musisz mieć pewność, że przynajmniej te pakiety są zainstalowane:
emulator (Android Emulator)
platform-tools (Android SDK Platform-Tools)
tools (Android SDK Tools)
I jak wspomniałem wcześniej, na przykład musisz zainstalować obrazy systemowe, których używa AVD system-images;android-25;google_apis;x86
Pamiętaj, że najnowsze wersje w SDK nie mają wersji autonomicznej SDK Manager.exe
. Zamiast tego musisz albo użyć Android Studio, albo tools\bin\sdkmanager.bat
(Linux / MacOS prawdopodobnie ma sh
pliki).
Aby wyświetlić listę wszystkich dostępnych pakietów, użyj sdkmanager --list
lubsdkmanager --list --verbose
Aby zainstalować pakiety, użyj sdkmanager <package1> <package2> ...
Polecam również ręcznie zainstalować HAXM w systemie.
Pliki Qcow2 odnoszą się do nieprawidłowych / nieistniejących obrazów podstawowych
Ostatni problem, o którym wspomnę, ma miejsce, gdy próbujesz przenieść AVD lub SDK z jednego komputera lub katalogu na inny. W takim przypadku możesz otrzymać taki błąd:
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, tylko do odczytu: nie można otworzyć pliku zapasowego: nie można otworzyć ' <old_sdk_dir>\system-images\android-22\google_apis\x86\system.img
': nieprawidłowy argument
Istnieją 2 sposoby, aby to naprawić:
Jeśli nie dbasz o dane, które zawiera AVD, po prostu usuń wszystkie qcow2
pliki z katalogu AVD (np. Z <user_home>/.android/avd/<avd_name>
). W takim przypadku otrzymasz czystą wersję Androida, jak po twardym resecie.
Jeśli dane na emulatorze są dla Ciebie ważne, to otwórz wszystkie qcow2
pliki jeden po drugim za pomocą dowolnego edytora HEX (wolę HxD ), znajdź ścieżkę do img
pliku podstawowego i zmień go na właściwy w Overwrite
trybie (aby zachować rozmiar pliku). Następnie wybierz ścieżkę i uzyskaj jej długość w postaci szesnastkowej (np 2F
.). 2F
reprezentuje ukośnik ASCII /
. Umieść go na miejscu 13
:
PS: Nie jestem pewien, ale prawdopodobnie jest kilka narzędzi, takich jak qemu-img, które pozwalają ustawić inny obraz podstawowy. Cóż, dla mnie łatwiej jest ręcznie edytować plik binarny.
Teraz prawdopodobnie będziesz w stanie pomyślnie uruchomić swoje urządzenie wirtualne z Androidem. Mam nadzieję :)