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.
Just fixed this. Hope this helps others. (Issue as in Android studio v2)
This issue is for arm emulators. In this example I am using armeabi-v7a API 16
The fix is three steps:
Step 1:
Open sdk manager and make sure that you have installed ARM EABI v7a System Image
Step 2.
This is the obvious case of adding the location of sdk to system variables.
Right click on «This PC» icon on desktop, then
Properties -> Advanced system settings -> Environment Variables...
Then add the path to sdk as new to system variables section using variable name ANDROID_SDK_ROOT
.
Step 3.
Restart Android Studio for changes to register. After correcting the ANDROID_SDK_ROOT
is undefined issue, the emulator still can’t find the kernel files even though it can see that the sdk manager installed it to
path-to-sdksdksystem-imagesandroid-16defaultarmeabi-v7akernel-qemu
The reason is a mix-up between the location the sdk manager installs the kernel file to and the location the emulator is looking for it.
If you open your config.ini (Android Studio -> AVD Mananger -> «Show On Disk») for your emulator you will see the following line:
image.sysdir.1=add-onsaddon-google_apis-google-16imagesarmeabi-v7a
(i.e path-to-sdkadd-onsaddon-….)
Instead of changing this value in the config.ini file I copied
path-to-sdksdksystem-imagesandroid-16defaultarmeabi-v7akernel-qemu
(kernel file from the folder sdk manager installed)
to
path-to-sdkadd-onsaddon-google_apis-google-16imagesarmeabi-v7a
And that was the missing kernel file. You can run the emulator. (You will need to close the Android Studio and reopen again) Give the emulator some time as it is 10x times slower compared to x86. (Mine took about 5 minutes to start)
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 для компиляции и библиотеки поддержки. Если отличаются — исправить.
Вводные: 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:UsersusernameAppDataLocalAndroidSdk и C:javajdk15.0.1 соответственно.
- Памяти под виртуальный девайс выделено 2 Гб (согласно рекомендациям установщика).
- Запуск устройства без скинов тоже результатов не принес.
*
При этом я устанавливал AS на другую машину: порядок установки полностью аналогичный; система — та же Win10x64 и тоже под AMD-процессором. И там все заработало «из коробки», никаких «Invalid Gradle JDK configuration» не возникало, телефон сразу появился и все работает.
Становится ясно, что я где-то не там ищу решение, но моего уровня, видимо, недостаточно, чтобы понять что-то очень простое и банальное, но не очевидное.
Так что именно я делаю не так, и что мне следует предпринять, чтобы таки запустить этот проклятый эмулятор в Android Studio на данной конкретной машине?
Кажется, что «Ожидание выхода целевого устройства в сеть…» — это общее сообщение, которое появляется всегда, когда эмулятор не может запуститься должным образом. И в чем причина этого? Как видите, причин может быть много.
Я думаю, что лучший способ найти конкретную ошибку с помощью эмулятора — запустить ее в терминале. Так:
1 — Откройте терминал и перейдите в эту папку: ~/Android/Sdk/tools
2 — Запустите эмулятор с помощью этой команды:
./emulator -avd EMULATOR_NAME -netspeed full -netdelay none
Вы можете увидеть имя ваших (ранее созданных с помощью AVD Manager) эмуляторов с помощью этой команды:
./emulator -list-avds
Если все в порядке, программа не запускается и записывает в терминал конкретную ошибку.
В моем случае приложение сообщает, что при загрузке графического драйвера возникла проблема («ошибка libGL: невозможно загрузить драйвер: r600_dri.so»). Как объясняется здесь, похоже, что Google упаковал с Android Studio старую версию одной библиотеки, и эмулятор не работает, когда он пытается использовать мою графическую карту.
Решение? Очень просто: использовать системные библиотеки вместо упакованных в Android Studio. Как? Добавление «-use-system-libs» в конце команды. Так:
./emulator -avd EMULATOR_NAME -netspeed full -netdelay none -use-system-libs
Окончательное решение — установить для переменной пользователя ANDROID_EMULATOR_USE_SYSTEM_LIBS значение 1 для вашего пользователя/системы. С этим изменением, когда я запускаю эмулятор в Android Studio, он также загружает системные библиотеки.
PS 1 — Я нашел самый простой способ установить переменную окружения, это изменить скрипт, который запускает Android Studio (studio.sh, в моем случае он находится внутри /opt/android-stuido/bin), и добавить в начале этот:
export ANDROID_EMULATOR_USE_SYSTEM_LIBS=1
PS 2 — я работаю с Debian Jessie и Android Studio 2.2.3. Моя графическая карта — ATI Radeon HD 6850 от Sapphire.
ОБНОВЛЕНИЕ Декабрь 2017: У меня была та же проблема с Debian Stretch и Android Studio 3.0.1 (та же графическая карта). Такое же решение работает для меня.