Другое

Исправление цикла загрузки эмулятора Android в Linux

Исправление проблемы, когда эмулятор Android зависает в цикле загрузки при запуске из IntelliJ/Android Studio в Linux, в то время как из командной строки работает нормально. Полное руководство по устранению неполадок.

Проблема с запуском Android эмулятора из кнопки “Запуск” в IntelliJ и Android Studio на Linux, но работает из командной строки

Проблема:

  • Используются IntelliJ Ultimate 2025.2.4 и Android Studio 2025.2.1
  • При нажатии зеленой кнопки запуска для запуска Android эмулятора он застревает в цикле загрузки
  • Эмулятор никогда не запускается правильно из IDE
  • Logcat показывает устройство как OFFLINE и не предоставляет полезной информации для отладки

Что работает:

  • Запуск эмулятора из командной строки работает нормально:
    /home/my_user/Android/Sdk/emulator/emulator -avd MyVirtualDeviceName -wipe-data -no-snapshot -verbose -show-kernel
  • Эмулятор успешно загружается примерно за 15 секунд из командной строки
  • Однако приложение не устанавливается на эмуляторе при запуске таким способом

Детали окружения:

  • Стандартные Android проекты работают нормально с версиями JVM
  • Проблема специфична для запуска Android эмулятора из IDE
  • Переменная ANDROID_HOME установлена в ~/Android/Sdk
  • PATH обновлен для включения путей к Android SDK:
    • ~/Android/Sdk
    • ~/Android/Sdk/emulator
    • ~/Android/Sdk/platform-tools

Вопрос:
Что может вызывать цикл загрузки Android эмулятора при запуске из кнопки “Запуск” в IntelliJ и Android Studio на Linux, в то время как из командной строки он работает нормально? Как правильно настроить мое окружение для решения этой проблемы?

Эмулятор Android застревает в цикле загрузки при запуске из IntelliJ и Android Studio в Linux, поскольку у среды разработки возникают проблемы с коммуникацией с процессом эмулятора, в то время как командная строка работает из-за прямого обхода специфичных для среды разработки уровней коммуникации. Это обычно происходит из-за конфликтов процессов ADB, повреждения временных файлов или несоответствий в конфигурации ускорителя эмулятора.

Содержание


Основные причины проблемы цикла загрузки

Существует несколько факторов, которые могут вызвать зависание эмулятора при запуске из среды разработки, в то время как командная строка работает нормально:

Повреждение временного каталога
Каталог /tmp в Linux может накапливать поврежденные файлы, которые мешают коммуникации между средой разработки и эмулятором. Согласно официальному руководству по устранению неполадок Android, очистка временного каталога часто решает проблемы цикла загрузки.

Конфликты процессов ADB
Несколько одновременно работающих процессов ADB могут вызвать сбой коммуникации между средой разработки и эмулятором. Среда разработки может не обнаружить или не правильно взаимодействовать с уже запущенным экземпляром эмулятора.

Проблемы с ускорителем эмулятора
Если в SDK Tools выбран ускоритель эмулятора Intel x86, но он не установлен правильно, среда разработки попытается его использовать, что приведет к сбою запуска. Как сообщил один пользователь на Reddit, простое отключение этого параметра решило их проблему.

Конфликты файлов блокировки
Когда сеанс эмулятора прерывается или завершается некорректно, могут оставаться файлы блокировки, которые предотвращают последующие запуски. Эти файлы обычно находятся в каталоге Android SDK и могут блокировать доступ среды разработки, позволяя при этом операции из командной строки.


Пошаговые решения

1. Очистка временного каталога и файлов блокировки

bash
# Очистка временного каталога
sudo rm -rf /tmp/android*

# Удаление файлов блокировки эмулятора
rm -f ~/.android/avd/*/emulator.lock
rm -f ~/.android/emu.cfg.lock

Как предлагает руководство Repeato, очистка файлов блокировки из прерванных сеансов часто решает проблемы экрана загрузки.

2. Принудительное завершение процессов ADB и перезапуск среды разработки

bash
# Завершение всех процессов ADB
adb kill-server
pkill -f adb
pkill -f emulator

# Полный перезапуск Android Studio

Этот подход, упомянутый в ответе на Stack Overflow, обеспечивает чистое состояние для коммуникации между средой разработки и эмулятором.

3. Проверка и настройка ускорителя эмулятора

  1. Откройте Android Studio → SDK Manager → SDK Tools
  2. Проверьте, установлен ли “Intel x86 Emulator Accelerator (HAXM installer)”
  3. Если не установлен, либо установите его, либо отключите, если он выбран

Опыт пользователя с Reddit показывает, что это решило их идентичную проблему.


Расширенные исправления конфигурации

4. Обновление Android Studio и инструментов SDK

bash
# Проверка обновлений в Android Studio
# или через командную строку:
sudo apt update
sudo apt upgrade android-studio

В статье Technipages упоминается, что обновление с Android Studio 4.0.1 до 4.1 решило их проблему ожидания подключения.

5. Настройка аргументов командной строки эмулятора в среде разработки

  1. Перейдите в Run → Edit Configurations
  2. Выберите конфигурацию вашего Android приложения
  3. В поле “emulator options” добавьте:
    -netdelay none -netspeed full -no-snapshot -verbose -show-kernel -wipe-data
    

Это зеркально отражает вашу рабочую конфигурацию командной строки и гарантирует, что среда разработки использует те же параметры.

6. Проверка переменных окружения и путей

Убедитесь, что ваши переменные окружения установлены правильно:

bash
echo $ANDROID_HOME
echo $PATH | grep Android

Убедитесь, что эти пути существуют и доступны:

  • ~/Android/Sdk
  • ~/Android/Sdk/emulator
  • ~/Android/Sdk/platform-tools

Профилактические меры

7. Регулярные задачи обслуживания

Регулярная очистка кэша ADB:

bash
adb kill-server
adb start-server

Мониторинг процессов ADB:

bash
ps aux | grep adb
ps aux | grep emulator

Использование командной строки для тестирования:
Поскольку ваша настройка командной строки работает, рассмотрите возможность использования ее для быстрых тестов:

bash
/home/my_user/Android/Sdk/emulator/emulator -avd MyVirtualDeviceName -no-snapshot -verbose -show-kernel &
sleep 15
adb install your-app.apk
adb shell am start -n com.your.package/.MainActivity

Альтернативные обходные пути

8. Использование Device Manager Android Studio

Вместо запуска из кнопки Run:

  1. Откройте Device Manager (Tools → AVD Manager)
  2. Нажмите кнопку “Play” рядом с вашим эмулятором
  3. Дождитесь полной загрузки
  4. Затем запустите ваше приложение из среды разработки

Это обходит некоторую автоматическую обработку эмулятора со стороны среды разработки.

9. Попробуйте сторонние эмуляторы

Рассмотрите возможность использования альтернатив:

  • Genymotion (быстрее, надежнее)
  • Waydroid (нативный для Linux эмулятор Android)
  • BlueStacks (если доступен для вашего дистрибутива Linux)

10. Конфигурация виртуальной машины

Если работаете в виртуальной машине:

  • Убедитесь, что виртуализация включена в BIOS
  • Выделите достаточный объем оперативной памяти (не менее 4 ГБ)
  • Используйте аппаратное ускорение, если оно поддерживается

Источники

  1. Эмулятор Android не запускается из кнопки Play в IntelliJ и Android Studio в Linux, но работает из командной строки - Stack Overflow
  2. Устранение известных проблем с эмулятором Android | Разработчики Android
  3. Решение проблемы зависания эмулятора на экране загрузки в Android Studio - Repeato
  4. Список устройств Android Studio застрял на загрузке - Stack Overflow
  5. Android Studio: Запуск приложения в эмуляторе не работает - Unix & Linux Stack Exchange
  6. Эмулятор застрял на “запуске” - r/AndroidStudio
  7. Эмулятор Android застрял на “Ожидании подключения целевого устройства” - Technipages

Заключение

Проблема цикла загрузки эмулятора Android в Linux при запуске из IntelliJ/Android Studio обычно связана с конфликтами коммуникации между процессами среды разработки и эмулятора. Начните с очистки временных каталогов и файлов блокировки, затем принудительно завершите процессы ADB и перезапустите вашу среду разработки. Если проблема сохраняется, проверьте конфигурацию ускорителя эмулятора и убедитесь, что аргументы командной строки совпадают между средой разработки и терминалом. Для обеспечения надежности в долгосрочной перспективе рассмотрите использование Device Manager для запуска эмулятора или поддержание регулярного режима обслуживания для процессов ADB и временных файлов. Поскольку ваша настройка командной строки работает идеально, вы также можете разработать гибридный рабочий процесс, используя командную строку для управления эмулятором и среду разработки для разработки.

Авторы
Проверено модерацией
Модерация
Исправление цикла загрузки эмулятора Android в Linux