Что означает ошибка adb device offline
Ошибка adb device offline возникает, когда Android Debug Bridge (ADB) обнаруживает подключённое Android-устройство, но не может установить с ним полноценное соединение для отладки. В результате команда adb devices отображает статус устройства как offline вместо device.
Типичный вывод в терминале:
List of devices attached
0123456789ABCDEF offline
Эта ошибка блокирует возможность выполнения любых ADB-команд (установка приложений, логи, shell-доступ), что делает устройство бесполезным для разработки или рутинных операций.
Причины возникновения
Ошибка возникает из-за разрыва в "рукопожатии" между ADB-сервером на компьютере и ADB-демоном на устройстве. Основные причины:
- Не подтверждённая авторизация. На устройстве при первом подключении должно появиться окно с запросом «Разрешить отладку по USB?» и отпечатком ключа. Если нажать «Отмена» или закрыть окно, устройство перейдёт в статус
offline. - Проблемы с USB-кабелем или портом. Кабель, который только заряжает, но не передаёт данные, или неисправный/недостаточно мощный порт USB.
- Конфликт или устаревшие драйверы (Windows). Неправильно установленный драйвер ADB Interface или конфликт с другим ПО, эмулирующим устройства (например, виртуальные машины, эмуляторы).
- Блокировка брандмауэром или антивирусом. Некоторые программы безопасности могут блокировать соединение на порту 5037, который использует ADB.
- Сбой в работе ADB-сервера. Временный глюк в процессе
adb.exe(илиadbна Linux/macOS), требующий перезапуска. - Несоответствие версий ADB. Редко, но может случиться при использовании очень старой версии Android SDK Platform-Tools с новым устройством (или наоборот).
Способы решения
Рекомендуется выполнять способы в порядке от простого к сложному.
Способ 1: Базовая переподключение и авторизация
Это самое частое решение, которое устраняет проблему с "зависшей" сессией авторизации.
- На Android-устройстве откройте Настройки → Параметры разработчика.
- Найдите и отключите опцию «Отладка по USB» (USB debugging).
- Отключите USB-кабель от компьютера.
- Включите «Отладка по USB» обратно.
- Подключите устройство к компьютеру.
- Немедленно на экране телефона, когда появится диалог «Разрешить отладку по USB?», поставьте галочку «Всегда разрешать с этого компьютера» и нажмите «OK».
- В терминале выполните
adb devices. Устройство должно отображаться какdevice.
Способ 2: Перезапуск ADB-сервера
Если проблема не в авторизации, а в сбое самого сервера ADB.
- Откройте терминал (Command Prompt, PowerShell, bash).
- Выполните команду для остановки сервера:
Вывод может быть пустым или содержать сообщение о завершении.adb kill-server - Сразу же запустите сервер заново:
Вы должны увидеть сообщениеadb start-server* daemon started successfully *. - Проверьте список устройств:
adb devices. Статус должен измениться наdevice.
Способ 3: Обновление/переустановка драйверов (Только Windows)
Если проблема проявляется только на Windows, скорее всего, дело в драйвере.
- На компьютере нажмите
Win + R, введитеdevmgmt.mscи нажмите Enter (Диспетчер устройств). - Найдите ваше подключённое устройство. Оно может быть в разделах:
- Портативные устройства (с жёлтым восклицательным знаком).
- Другие устройства.
- Android Device (если драйвер частично установлен).
- Кликните правой кнопкой по устройству и выберите «Удалить устройство». Если появится галочка «Удалить программы драйверов для этого устройства» — поставьте её.
- Отключите и снова подключите телефон к компьютеру.
- Windows попытается найти драйвер автоматически. Не давайте ей этого делать. Вместо этого:
- Снова в Диспетчере устройств откройте Действие → Добавить устаревшее оборудование.
- Нажмите Далее, выберите «Установить оборудование, выбранное вручную из списка».
- В списке классов выберите «Портативные устройства» (или «Android Device»).
- Нажмите Далее, затем «Установить с диска».
- Нажмите Обзор и укажите путь к папке с драйвером Google USB Driver. Обычно он находится в
<sdk>\extras\google\usb_driver\(где<sdk>— путь к вашему Android SDK). - Выберите файл
android_winusb.infи нажмите Открыть → OK. - В списке выберите «Android ADB Interface» и нажмите Далее. Допустите предупреждение о неподписанном драйвере.
- После установки в
adb devicesустройство должно появиться какdevice.
Способ 4: Сброс авторизаций USB-отладки на устройстве
Если компьютер "запомнил" некорректный ключ или произошёл сбой в цепочке доверия.
- На устройстве перейдите в Настройки → Параметры разработчика.
- Найдите и нажмите «Отозвать разрешения отладки по USB» (Revoke USB debugging authorizations).
- Подтвердите действие.
- Включите «Отладка по USB» (если она выключилась).
- Переподключите устройство к компьютеру.
- При появлении диалога «Разрешить отладку по USB?» снова подтвердите его, поставив галочку «Всегда разрешать».
Способ 5: Проверка кабеля, порта и режима USB
Аппаратные и конфигурационные проблемы.
- Используйте другой USB-кабель. Убедитесь, что кабель оригинальный или качественный и поддерживает передачу данных (не только зарядку).
- Подключитесь к другому физическому порту USB на компьютере, желательно напрямую к материнской плате (не через хаб).
- На устройстве при подключении измените режим USB (выпадающее уведомление "USB для зарядки"). Попробуйте последовательно:
- «Передача файлов» (MTP/File Transfer)
- «PTP» (Передача изображений)
- «Без передачи данных» (No data transfer), а затем обратно в «Передача файлов».
- Перезагрузите оба устройства: сначала телефон, затем компьютер.
Профилактика
Чтобы минимизировать вероятность появления ошибки adb device offline:
- Всегда подтверждайте диалог авторизации при первом подключении устройства к новому компьютеру.
- Используйте качественный USB-кабель для разработки, а не тот, что шёл в комплекте только для зарядки.
- Регулярно обновляйте Android SDK Platform-Tools до последней стабильной версии через SDK Manager.
- На Windows после крупных обновлений системы переустановите драйвер Google USB Driver.
- Если используете виртуальные машины или другие программы, создающие виртуальные ADB-устройства (Genymotion, BlueStacks), убедитесь, что они корректно завершают работу, чтобы не блокировать порт 5037.
Дополнительные меры (если ничего не помогло)
Если проблема остаётся, выполните комплексную проверку:
- Убедитесь, что ADB видит устройство на уровне системы.
- На Linux/macOS выполните
lsusb(Linux) илиsystem_profiler SPUSBDataType(macOS). Устройство должно быть в списке. - На Windows в Диспетчере устройств не должно быть unknowns или устройств с ошибками.
- На Linux/macOS выполните
- Проверьте, не занят порт 5037 другим процессом. Выполните:
- Windows:
netstat -ano | findstr :5037 - Linux/macOS:
lsof -i :5037Если порт занят, завершите конфликтующий процесс (например, другой экземпляр ADB, Genymotion, Some Android tools).
- Windows:
- Временно отключите антивирус и брандмауэр на 5 минут и проверьте
adb devices. Если ошибка исчезла — добавьте исключение для папки с Android SDK и дляadb.exeв настройках безопасности. - Создайте нового пользователя Windows (или аккаунт на macOS/Linux) и попробуйте запустить ADB от его имени. Это исключит проблему с повреждённым профилем текущего пользователя.
- Обновите прошивку устройства (если есть возможность) или попробуйте подключить другое Android-устройство. Это поможет локализовать проблему: если со вторым устройством всё работает, значит, проблема на стороне первого (возможно, сбой в настройках разработчика или аппаратная неисправность порта micro-USB/USB-C).