It seems that «Waiting for target device to come online …» is a generic message that appears, always, when the emulator can not start properly. And what’s the cause of that? As you can see, there could be many causes.
I think the best way to find the concrete error with the emulator is to start it within a terminal. So:
1 — Open a terminal and go to this folder:~/Android/Sdk/tools
2 — Start the emulator with this command:
./emulator -avd EMULATOR_NAME -netspeed full -netdelay none
You can see the name of your (previously created with AVD Manager) emulators with this command:
./emulator -list-avds
If everything is ok, the program doesn’t start, and it writes in the terminal the concrete error.
In my case, the application says that there is a problem loading the graphic driver («libGL error: unable to load driver: r600_dri.so«). As it is explained here, it seems that Google packaged with Android Studio an old version of one library, and the emulator fails when it tries to use my graphic card.
The solution? Very easy: to use the system libraries instead of the packaged in Android Studio. How? Adding «-use-system-libs» at the end of the command. So:
./emulator -avd EMULATOR_NAME -netspeed full -netdelay none -use-system-libs
The definitive solution is to set the ANDROID_EMULATOR_USE_SYSTEM_LIBS environment variable to 1 for your user/system. With this change, when I run the emulator within Android Studio, it will also load the system libraries.
PS 1 — The easiest way I found to set the environment variable, it’s to modify the script that launches the Android Studio (studio.sh, in my case it is inside /opt/android-stuido/bin), and add at the beginning this:
export ANDROID_EMULATOR_USE_SYSTEM_LIBS=1
PS 2 — I work with Debian Jessie and Android Studio 2.2.3. My graphic card is an ATI Radeon HD 6850 by Sapphire.
UPDATE December 2017: I had the same problem with Debian Stretch and Android Studio 3.0.1 (same graphic card). The same solution works for me.
It seems that «Waiting for target device to come online …» is a generic message that appears, always, when the emulator can not start properly. And what’s the cause of that? As you can see, there could be many causes.
I think the best way to find the concrete error with the emulator is to start it within a terminal. So:
1 — Open a terminal and go to this folder:~/Android/Sdk/tools
2 — Start the emulator with this command:
./emulator -avd EMULATOR_NAME -netspeed full -netdelay none
You can see the name of your (previously created with AVD Manager) emulators with this command:
./emulator -list-avds
If everything is ok, the program doesn’t start, and it writes in the terminal the concrete error.
In my case, the application says that there is a problem loading the graphic driver («libGL error: unable to load driver: r600_dri.so«). As it is explained here, it seems that Google packaged with Android Studio an old version of one library, and the emulator fails when it tries to use my graphic card.
The solution? Very easy: to use the system libraries instead of the packaged in Android Studio. How? Adding «-use-system-libs» at the end of the command. So:
./emulator -avd EMULATOR_NAME -netspeed full -netdelay none -use-system-libs
The definitive solution is to set the ANDROID_EMULATOR_USE_SYSTEM_LIBS environment variable to 1 for your user/system. With this change, when I run the emulator within Android Studio, it will also load the system libraries.
PS 1 — The easiest way I found to set the environment variable, it’s to modify the script that launches the Android Studio (studio.sh, in my case it is inside /opt/android-stuido/bin), and add at the beginning this:
export ANDROID_EMULATOR_USE_SYSTEM_LIBS=1
PS 2 — I work with Debian Jessie and Android Studio 2.2.3. My graphic card is an ATI Radeon HD 6850 by Sapphire.
UPDATE December 2017: I had the same problem with Debian Stretch and Android Studio 3.0.1 (same graphic card). The same solution works for me.
Android Studio – эмулятор Android для ПК, имитирующий работу данной ОС. Применяется как среда для разработки мобильных приложений. Использует AVD-конфигурацию, определяющую, что нужно эмулировать: форм-фактор, обычную ОС Андроид или части ОС и варианты настроек.
Подробнее о том, что такое Android Studio, вы можете прочитать в отдельной статье, перейдя по ссылке.
Инструкция по запуску
Рассмотрим, как запустить эмулятор Android Studio.
- Загружаем пакет отсюда — developer.android.com/studio?hl=ru.
- Устанавливаем скачанное приложение. Важно! При загрузке выберите места для двух частей: студии и SDK (можно установить в разные папки). Для SDK нужно, чтобы на диске было свободно 6 – 8 Гб (3,2 Гб для установки и еще запас в 3-5 Гб на будущие обновления).
- Ждем окончания загрузки SDK и установки.
- Запускаем Android Studio.
- Создаем новый проект («Start a new project»).
- Заполняем поля: имя, домен, расположение на диске. Выбираем версию SDK.
- Кликаем «Finish» и ждем, пока AS будет создавать проект (1-5 минут).
- Жмем вверху «AVD Manager», затем внизу слева кнопку «Create Virtual Device».
- Кликаем «Next», «Finish».
- Жмем «Shift + F10».
- Выбираем, на каком устройстве запускать готовое приложение.
- Настройка завершена — эмулятор готов к работе.
Возможные ошибки и методы решения
Бывает, что приложение не хочет запускаться, или на каком-то этапе создания выдаются ошибки.
Рассмотрим, почему Android Studio эмулятор не запускается, и перечислим методы решения проблем.
Синхронизация Android Gradle завершилась неудачно из-за целевой версии
Необходимо проверить, установлен ли API 23. Если нет — установить через Менеджер SDK.
Класс действия {} не существует
Варианты решения.
- Перейти в настройки модуля, затем «Flavors», «Идентификатор приложения» и добавить название пакета.
- Установить название класса с полным путем (например: .com.example.Splash вместо .Splash).
- Перезапустить IDE.
- Перейти по пути: «Настройки» — «Приложения». Выбрать приложение, открыть меню переполнения (верхний угол справа) и нажать «Удалить всех пользователей». Загрузить приложение заново.
- Перезапустить демон ADB (ввести в терминале «adb kill-server», ниже — «adb start-server»).
- Очистить проект («Сборка» — «Чистый проект»).
Ошибка com.google.android.gms / play-services / 8.4.0 / gradle: 2.0.0-alpha5
Чтобы исправить ошибку, обновите «project/grandle.build» и дистрибутив «Grandle».
Студийный модуль Android не может найти пакет
Варианты действий.
- Импортировать проект библиотеки по пути «File» – «New» – «Import Module». Затем посмотреть, есть ли внутри папки проекта файл «build.gradle».
- Проверить, одинаковая ли версия плагина для Андроид (в Структуре проекта в разделе «Пакет») и у подключаемых модулей. Если различаются — сделать одинаковыми.
- Зайти в Структуру проекта, выбрать проект слева, изменить версию плагина на «Gradle». Если синхронизация выдает ошибку, то перейти к Структуре проекта, выбрать версию плагина «Project.undo».
Тип Diamond не поддерживается
Варианты решения.
- Перейти в «Файл» — «Структура проекта» — «Свойства». Прописать для Source Compability == 1.7, для Target Compability == 1.7.
- Проверить версию JDK. Оператор Diamond появляется у JDK 7.
- Обновить BuildToolsVersion и SDK.
- В уровне языка (в настройках проекта, в разделе «Проект») выбрать вариант «Diamonds, ARM, Multi-catch etc».
Android Studio — Robolectric: android.content.res.Resources $ NotFoundException: нет такой метки com.my.app:string/app_name
Пути устранения ошибки.
- Посмотреть, совпадает ли имя пакета с именем приложения. Если не совпадает — исправить.
- Проверить, созданы ли и правильно ли названы каталоги, переданные приложению.
Ошибка получения родительского элемента
Чтобы исправить, проверьте, одинаковы ли версия SDK для компиляции и библиотеки поддержки. Если отличаются — исправить.
In my case, after installing the Microsoft Visual C++ Redistributable for Visual Studio 2015, 2017 and 2019 (both x86 and x64 version), the issue is solved.
But wait! Why did I know this? I will tell you my experience.
When your program meets a bug, the first thing you need to do is finding the log to debug. But where is the log file that records all the events of the Android emulator? Click Help→Show log in Explorer. And then a new window is oepned, where a file called idea.log is located, and that log file is what we are looking for.
But this file may has recorded too much verbose info, so let’s do following processes to get a more simple one:
·Exit Android Studio
·Delete the idea.log
·Open Android Studio
·Click Tools→ AVD Manerger
·Start one of emulators you have created, and needless to say, the error will occur again. But the idea.log will be created and the error is recorded into the log file now!
·Exit Android Studio.
·Open the idea.log and begin to analyze it.
·Search «emulator», and in my case there are 2 messages catching my eyes:
INFO - manager.EmulatorProcessHandler - Emulator: E:\cache\SDK\emulator\emulator.exe -netdelay none -netspeed full -avd Nexus_5_API_22
INFO - manager.EmulatorProcessHandler - Emulator: Process finished with exit code -1073741515 (0xC0000135)
Obviously, the «exit code 1073741515» is something important, and actually many people have asked what it means in StackOverFlow, but unfortunately, I can’t find any useful info about it. So let’s pass it and focus on the first message.
Open the command line (Press «Win»+»R» → Enter «CMD» → Click «OK»), copy the above message E:\cache\SDK\emulator\emulator.exe -netdelay none -netspeed full -avd Nexus_5_API_22
and paste it to the command line. Press Enter.
I totally didn’t know what this command meaned, but it’s reasonable to deduce that Android Studio ran this command and resulted in the error, so I will try to reproduce the issue.
After that, an error window pop up, saying «…VCRUNTIME140_1.dll is missing…«. I know I have been close to the answer. So I serch «VCRUNTIME140_1.dll Missing» on google, and people said that «downloading and installing both the x86 and x64 versions of the Microsoft Visual C++ 2015 — 2019 Redistributable will resolve this problem«.
So I download both the x86 and x64 version and install them. After doing this, I run the emulator again, and everything goes well.
Вводные: AMD, Win10x64, Android Studio 4.1.1.
Java установлена, в командной строке и в Eclipse работает.
При создании проекта Empty Activity выдает в Sync «Invalid Gradle JDK configuration found» и на выбор 2 варианта:
Насколько я могу судить по тому, что нагуглил, такая проблема возникает, если в настройках структуры проекта не указана или указана ошибочно SDK. Но и SDK, и JDK указаны корректно, см. нижний спойлер.
Если я выбираю из предложенных вариантов использовать JDK из структуры проекта, то говорит, что «BUILD SUCCESSFUL in 4s», но при попытке запуска эмулятора из AVD бесконечно крутится вот эта фигня:
Под «бесконечно» я подразумеваю, что спустя время выпадает «Timed out after 300seconds waiting for emulator to come online.», но вращение анимации загрузки не прекращается, и при этом ничего больше не происходит длительное время.
Если же выбираю перейти в настройки gradle, то даже несмотря на их скудность я не понимаю, что именно с ними следует делать, в силу того, что ни разу не сталкивался ни с Gradle, ни с Android, ни с самой IDE.
Чисто ради эксперимента я пробовал в Use Gradle from прописывать Specified location’ом путь как в Gradle home, но это ничего не изменило.
В Event Log советуют заглянуть в Help | Show Log. Я так и сделал, но значения содержимого не понимаю.
spoiler
Consult IDE log for more details (Help | Show Log) (356 ms)
2021-01-13 08:57:53,826 [1704150] INFO — .deployment.AsyncDevicesGetter — adb not found
2021-01-13 08:57:54,072 [1704396] INFO — .deployment.AsyncDevicesGetter — adb not found
2021-01-13 08:57:54,107 [1704431] INFO — roid.tools.ndk.GradleWorkspace — Updating model took 0.002s
2021-01-13 08:57:54,403 [1704727] INFO — ge.ExternalProjectsDataStorage — Save external projects data in 108 ms
2021-01-13 08:57:54,634 [1704958] INFO — .deployment.AsyncDevicesGetter — adb not found
2021-01-13 08:57:55,046 [1705370] INFO — .deployment.AsyncDevicesGetter — adb not found
2021-01-13 08:57:55,546 [1705870] INFO — .deployment.AsyncDevicesGetter — adb not found
2021-01-13 08:57:56,047 [1706371] INFO — .deployment.AsyncDevicesGetter — adb not found
2021-01-13 08:57:56,442 [1706766] WARN — ConfigurableExtensionPointUtil — ignore deprecated groupId: language for id: preferences.language.Kotlin.scripting
2021-01-13 08:57:56,450 [1706774] WARN — ConfigurableExtensionPointUtil — use other group instead of unexpected one: language.cpp
2021-01-13 08:57:56,451 [1706775] WARN — ConfigurableExtensionPointUtil — use other group instead of unexpected one: project.propCompiler
2021-01-13 09:10:03,448 [2433772] INFO — .deployment.AsyncDevicesGetter — adb not found
2021-01-13 09:10:03,881 [2434205] INFO — .deployment.AsyncDevicesGetter — adb not found
2021-01-13 09:10:04,383 [2434707] INFO — .deployment.AsyncDevicesGetter — adb not found
2021-01-13 09:10:04,884 [2435208] INFO — .deployment.AsyncDevicesGetter — adb not found
2021-01-13 09:10:05,886 [2436210] INFO — .deployment.AsyncDevicesGetter — adb not found
2021-01-13 09:10:06,388 [2436712] INFO — .deployment.AsyncDevicesGetter — adb not found
2021-01-13 09:10:06,889 [2437213] INFO — .deployment.AsyncDevicesGetter — adb not found
2021-01-13 09:10:07,390 [2437714] INFO — .deployment.AsyncDevicesGetter — adb not found
2021-01-13 09:10:07,892 [2438216] INFO — .deployment.AsyncDevicesGetter — adb not found
2021-01-13 09:10:08,394 [2438718] INFO — .deployment.AsyncDevicesGetter — adb not found
2021-01-13 09:10:09,396 [2439720] INFO — .deployment.AsyncDevicesGetter — adb not found
2021-01-13 09:10:09,897 [2440221] INFO — .deployment.AsyncDevicesGetter — adb not found
2021-01-13 09:10:10,399 [2440723] INFO — .deployment.AsyncDevicesGetter — adb not found
2021-01-13 09:10:10,901 [2441225] INFO — .deployment.AsyncDevicesGetter — adb not found
2021-01-13 09:10:11,402 [2441726] INFO — .deployment.AsyncDevicesGetter — adb not found
2021-01-13 09:10:11,903 [2442227] INFO — .deployment.AsyncDevicesGetter — adb not found
2021-01-13 09:10:12,404 [2442728] INFO — .deployment.AsyncDevicesGetter — adb not found
2021-01-13 09:10:12,905 [2443229] INFO — .deployment.AsyncDevicesGetter — adb not found
2021-01-13 09:10:13,407 [2443731] INFO — .deployment.AsyncDevicesGetter — adb not found
2021-01-13 09:10:13,909 [2444233] INFO — .deployment.AsyncDevicesGetter — adb not found
2021-01-13 09:10:14,411 [2444735] INFO — .deployment.AsyncDevicesGetter — adb not found
2021-01-13 09:10:14,912 [2445236] INFO — .deployment.AsyncDevicesGetter — adb not found
2021-01-13 09:10:15,413 [2445737] INFO — .deployment.AsyncDevicesGetter — adb not found
2021-01-13 09:10:15,914 [2446238] INFO — .deployment.AsyncDevicesGetter — adb not found
2021-01-13 09:10:16,415 [2446739] INFO — .deployment.AsyncDevicesGetter — adb not found
2021-01-13 09:10:16,917 [2447241] INFO — .deployment.AsyncDevicesGetter — adb not found
2021-01-13 09:10:17,418 [2447742] INFO — .deployment.AsyncDevicesGetter — adb not found
2021-01-13 09:10:17,920 [2448244] INFO — .deployment.AsyncDevicesGetter — adb not found
2021-01-13 09:10:18,422 [2448746] INFO — .deployment.AsyncDevicesGetter — adb not found
2021-01-13 09:10:18,924 [2449248] INFO — .deployment.AsyncDevicesGetter — adb not found
2021-01-13 09:10:20,429 [2450753] INFO — .deployment.AsyncDevicesGetter — adb not found
2021-01-13 09:10:20,928 [2451252] INFO — .deployment.AsyncDevicesGetter — adb not found
2021-01-13 09:10:21,429 [2451753] INFO — .deployment.AsyncDevicesGetter — adb not found
2021-01-13 09:10:37,971 [2468295] INFO — .deployment.AsyncDevicesGetter — adb not found
2021-01-13 09:10:38,472 [2468796] INFO — .deployment.AsyncDevicesGetter — adb not found
2021-01-13 09:10:38,554 [2468878] INFO — j.ide.actions.RevealFileAction — Exit code 1
2021-01-13 09:10:38,973 [2469297] INFO — .deployment.AsyncDevicesGetter — adb not found
2021-01-13 09:10:40,017 [2470341] INFO — .deployment.AsyncDevicesGetter — adb not found
Я искал по-разному и находил разные советы, в т.ч., как мне кажется, совсем не связанные с делом, но тем не менее, от безысходности я уже решил пробовать все подряд методом тыка, если описанная проблема похожа на мою. Что я предпринимал в порядке этих советов, и какие системные параметры проверил на соответствие оным:
spoiler
- Android Studio переустановлена с промежуточной чисткой системы и реестра Ccleaner.
- В SDK Manager загружены и установлены все Android сверху вниз до самого старого Jelly Bean включительно.
- Intel x86 Emulator Accelerator (HAXM) установлен
- Android Wear Intel x86 Atom System Image отдельно для Android 7.1.1 Nougat установлен.
- В BIOS включена системная виртуализация.
- В Windows включен Hyper-V*.
- В структуре проекта пути — C:\Users\username\AppData\Local\Android\Sdk и C:\java\jdk15.0.1 соответственно.
- Памяти под виртуальный девайс выделено 2 Гб (согласно рекомендациям установщика).
- Запуск устройства без скинов тоже результатов не принес.
*
При этом я устанавливал AS на другую машину: порядок установки полностью аналогичный; система — та же Win10x64 и тоже под AMD-процессором. И там все заработало «из коробки», никаких «Invalid Gradle JDK configuration» не возникало, телефон сразу появился и все работает.
Становится ясно, что я где-то не там ищу решение, но моего уровня, видимо, недостаточно, чтобы понять что-то очень простое и банальное, но не очевидное.
Так что именно я делаю не так, и что мне следует предпринять, чтобы таки запустить этот проклятый эмулятор в Android Studio на данной конкретной машине?