Nie można uruchomić emulatora w Android Studio

96

Właśnie skończyłem instalować Android Studio i próbować go przetestować. Kiedy próbuję uruchomić aplikację, pojawia się następujący komunikat o błędzie

emulator: ERROR: This AVD's configuration is missing a kernel file!!
emulator: ERROR: ANDROID_SDK_ROOT is undefined

Czy ktoś wie, jak to naprawić ????

Ted pottel
źródło
1
Sprawdź tę odpowiedź stackoverflow.com/questions/9712605/ ...
Psypher
@Ted pottel, czy którakolwiek z poniższych odpowiedzi odpowiedziała na twoje pytanie? Jeśli tak, kliknij znacznik wyboru obok niego.
Harris

Odpowiedzi:

27

Możliwe, że naprawdę nie masz obrazów systemu. Sprawdź dwukrotnie, czy $ANDROID_HOME/system-images/android-<YOUR DESIRED API>/armeabi-v7aistnieje i nie jest pusty. Jeśli naprawdę ich brakuje - zainstaluj / zainstaluj ponownie za pomocą menedżera SDK.

tse
źródło
2
Mam dwa problemy: 1: nie mogę znaleźć $ANDROID_HOME/system-images/android-<YOUR DESIRED API>/armeabi-v7a, 2: jak ponownie zainstalować urządzenie wirtualne za pomocą menedżera SDK
Musa Haidari
Czytając twoją odpowiedź, mogłem jednak obejść problem, a było to utworzenie nowego urządzenia wirtualnego, a problem nie wystąpił w przypadku nowego
Musa Haidari
4
W menedżerze SDK upewnij się, że zaznaczyłeś opcję „Pokaż szczegóły pakietu”, aby zobaczyć, które obrazy systemu są zainstalowane, a jeśli nie, zainstaluj je
Martyn Davis,
21

Idź do Narzędzia | Android | Menedżer AVD

Kliknij strzałkę pod kolumną Działania po prawej stronie (gdzie znajduje się komunikat o błędzie)

Wybierz Edytuj

Pozostaw domyślny wybór (dla mnie MNC x86 Android M)

Kliknij Następny

Kliknij Finish

Zapisuje AVD, a błąd zniknął z ostatniej kolumny. Emulator działa teraz dobrze.

Harris
źródło
15

Właśnie to naprawiłem. Mam nadzieję, że to pomoże innym. (Problem jak w Android Studio v2) Ten problem dotyczy emulatorów ramion. W tym przykładzie używam armeabi-v7a API 16

Poprawka to trzy kroki:

Krok 1: Otwórz menedżera sdk i upewnij się, że masz zainstalowany obraz systemu ARM EABI v7a

Krok 2. Jest to oczywisty przypadek dodania lokalizacji sdk do zmiennych systemowych.

Kliknij prawym przyciskiem myszy ikonę „Ten komputer” na pulpicie, a następnie

Properties -> Advanced system settings -> Environment Variables... Następnie dodaj ścieżkę do sdk jako nową do sekcji zmiennych systemowych, używając nazwy zmiennej ANDROID_SDK_ROOT.

Krok 3. Uruchom ponownie Android Studio, aby zarejestrować zmiany. Po naprawieniu ANDROID_SDK_ROOTnieokreślonego problemu emulator nadal nie może znaleźć plików jądra, mimo że widzi, że menedżer SDK zainstalował go w

path-to-sdk\sdk\system-images\android-16\default\armeabi-v7a\kernel-qemu

Powodem jest pomyłka między lokalizacją, w której menedżer SDK instaluje plik jądra, a lokalizacją, w której szuka go emulator.

Jeśli otworzysz plik config.ini (Android Studio -> AVD Mananger -> „Pokaż na dysku”) dla swojego emulatora, zobaczysz następujący wiersz:

image.sysdir.1=add-ons\addon-google_apis-google-16\images\armeabi-v7a\

(tj. \ path-to-sdk \ add-ons \ addon -....)

Zamiast zmieniać tę wartość w pliku config.ini, skopiowałem

path-to-sdk\sdk\system-images\android-16\default\armeabi-v7a\kernel-qemu

(plik jądra z folderu zainstalowanego menedżera sdk)

do

\path-to-sdk\add-ons\addon-google_apis-google-16\images\armeabi-v7a\

I to był brakujący plik jądra. Możesz uruchomić emulator. (Będziesz musiał zamknąć Android Studio i ponownie otworzyć) Daj emulatorowi trochę czasu, ponieważ jest 10 razy wolniejszy w porównaniu do x86. (Moje rozpoczęło się około 5 minut)

Asi Mugrabi
źródło
Uh, gdzie jest „config.ini dla Twojego emulatora”?
Jay
Android Studio -> AVD Mananger -> „Pokaż na dysku”. Edycja odpowiedzi.
Asi Mugrabi
To jest odpowiedź, która faktycznie image.sysdir.1=system-images\android-16\default\armeabi-v7a
załatwiła
To załatwiło sprawę w przypadku emulatora Nexusa 4. image.sysdir.1Konieczna aktualizacja do `system-images \ android-15 \ google_apis \ armeabi-v7a`
twig
10

Naprawiłem to, uruchamiając „C: \ Program Files \ Android \ android-sdk \ AVD Manager.exe” i naprawiając moje zepsute urządzenie.

airo
źródło
5

Krótka odpowiedź : spróbuj stworzyć ten sam obraz, korzystając ze starej szkoły <AndroidSDK>\AVD Manager.exe.

Pracując w Android Studio, uruchamiając wszystkie zintegrowane narzędzia, stało się dla mnie naturalne, że nie używam starych menedżerów (AVD / SDK).

W moim przypadku miałem ten problem, gdy użyłem nowego (zintegrowanego) Menedżera AVD do tworzenia urządzeń ze starymi obrazami systemu (API 11 i poniżej, jak testowałem).

Kiedy próbowałem użyć starego narzędzia AVD Manager (znajdującego się w <AndroidSDK>\AVD Manager.exe) do tworzenia tych starych obrazów urządzeń, odniosłem sukces.

Luan
źródło
2
Dzięki za sugestię - wydaje się, że samodzielne narzędzie wie, jak skonfigurować rzeczy dla starszych platform. Na OS X / MacOS: ~/Library/Android/sdk/tools/android avd.
neuralmer
4

Hej, właśnie napotkałeś ten sam problem, co ty, trzeci link w Google doprowadził mnie do tego fragmentu kodu, który generuje błąd,

if (kernelFile == NULL) {
        kernelFile = avdInfo_getKernelPath(avd);
        if (kernelFile == NULL) {
            derror( "This AVD's configuration is missing a kernel file!!" );
            const char* sdkRootDir = getenv("ANDROID_SDK_ROOT");
            if (sdkRootDir) {
                derror( "ANDROID_SDK_ROOT is defined (%s) but cannot find kernel file in "
                        "%s" PATH_SEP "system-images" PATH_SEP
                        " sub directories", sdkRootDir, sdkRootDir);
            } else {
                derror( "ANDROID_SDK_ROOT is undefined");
            }
            exit(2);

do którego osoba napisała:

"/ * Jeśli nazwa obrazu jądra kończy się na" -armv7 ", automatycznie zmień typ procesora *. Jest to kiepskie podejście do zarządzania * konfiguracją, ale powinno pozwolić nam ominąć budowanie obrazów systemu ARMv7 * z preopt pass dex "

Więc wróciłem i pobrałem wersję Intel Atom dla x86 dla mojego pożądanego poziomu API i mogłem uruchomić emulator bez błędu. Mam nadzieję, że to też pomoże ...

Brandon
źródło
2

Zwykle błąd wystąpi z powodu nieodpowiedniego emulatora AVD dla typu aplikacji, dla której tworzysz. Na przykład, jeśli tworzysz aplikację dla urządzenia do noszenia, ale próbujesz użyć emulatora telefonu, aby go uruchomić.

M Muli
źródło
2

Miałem ten sam błąd. Rozwiązaniem dla mnie była zmiana ścieżki ANDROID_HOME . Najpierw przyjrzałem się narzędziom- > android-> sdk manager z Android Studio. W tym oknie możemy zobaczyć ścieżkę, w której Android Studio szuka SDK: image

Następnie otworzyłem powłokę Windows CMD, wykonałem:

echo %ANDROID_HOME%

ale ścieżka była inna niż w KONFIGURACJI ANDROID STUDIO z pierwszego kroku.

Rozwiązaniem była zmiana środowiska użytkownika, ANDROID_HOME, na jeden z pierwszych kroków: obraz

W końcu zamknąłem powłokę cmd i otworzyłem kolejną powłokę cmd do wykonania:

echo %ANDROID_HOME%

ścieżka została zaktualizowana i mogłem doskonale uruchomić emulator.

Hector Pasarin
źródło
1

W moim przypadku (Windows 10) powodem było to, że odważyłem się rozpakować pakiet SDK Androida do folderu innego niż domyślny. Kiedy przeniosłem go na domyślny c: / Users / [nazwa użytkownika] / AppData / Local / Android / Sdk i zmieniłem ścieżki w Android Studio i zmiennych systemowych, zaczęło działać.

Lukas Hanacek
źródło
1
  • Otwórz studio Android.
  • Przejdź do ustawienia> Ustawienia systemu> Android SDK
  • Pobierz „Lokalizacja pakietu Android SDK”.
  • Ustaw zmienną środowiskową ANDROID_SDK_ROOT na tę wartość.

U mnie zadziałało i jestem na Windows 10 i Android Studio 2.3.3

3lokh
źródło
1
  1. Przejdź do „Edytuj zmienne środowiskowe systemu”.
  2. Kliknij przycisk Nowy i wpisz „ANDROID_SDK_ROOT” w nazwie zmiennej i wprowadź pełną ścieżkę android sdk w wartości zmiennej. Kliknij OK i zamknij.
  3. Odśwież AVD.
  4. To rozwiąże błąd.
Ritika Ranjan
źródło
-1

Typowe podejście do rozwiązania tego problemu.

1.Sprawdź swojego menedżera SDK, uruchamiając ze swojego studia Android i stojąc folder alons sdk, wykonując ./android.sh, aby znaleźć uszkodzone pakiety

  1. Spróbuj zainstalować obrazy emulatora systemu z obsługą Google API niż Intel. Tak jak rozwiązałem swój problem, uruchamiając inny obraz systemu.

  2. Eksperyment z Virtulaization opartym na KVM zaproponowanym przez Google dla Linuksa

Daniel Adenew
źródło