adb (Android Platform Tools); APK MiAuto из репозитория PiggyBackBayonet/MiAuto; телефон Xiaomi с CarWith, OPPO с Car+ или vivo с Jovi InCar; Wi-Fi-сеть, общая для телефона и ГУ
| Телефон | Приложение-источник | Кто делает |
|---|---|---|
| Xiaomi | CarWith | Xiaomi |
| OPPO | Car+ | OPPO |
| vivo | Jovi InCar | vivo |
adb — консольная утилита из Android Platform Tools, которая ставит APK и читает логи с подключённого устройства.Чек-лист перед началом:
adb devices видит устройство в статусе device, а не unauthorizedPiggyBackBayonet/MiAutoПример: проверка связи с ГУ до установки.
adb devices
Ожидаемый вывод:
List of devices attached
0123456789ABCDEF device
Если в правой колонке unauthorized — на экране ГУ не подтвердили запрос «Разрешить отладку по USB». Если список пуст — кабель, драйвер или выключенная отладка.
Порядок установки APK на Android подробно разобран в гайде WordCraft APK для Android: где скачать, как проверить файл и установить — логика проверки файла и установки там та же.
Что сделать: подключить ГУ к ПК по USB, установить APK и убедиться, что пакет появился в системе.
Зачем: приёмник должен работать на устройстве, которое отдаёт экран в автомобиле. Пока APK не установлен на ГУ, телефону не к чему подключаться.
Как проверить: adb install вернул Success, а pm list packages -3 показывает новый пакет.
adb install -r MiAuto.apk
Ожидаемый вывод:
Performing Streamed Install
Success
Почему это работает: -r переустанавливает пакет с сохранением данных, поэтому повторный запуск команды после обновления сборки не требует удаления приложения.
Если у ГУ нет доступного USB-порта, но есть отладка по сети, подключитесь по стандартному порту ADB 5555:
adb connect 192.168.1.50:5555
где 192.168.1.50 — IP-адрес ГУ в вашей сети (посмотрите в настройках Wi-Fi головного устройства). Команда должна ответить connected to 192.168.1.50:5555.
Зафиксируйте список сторонних пакетов до и после установки — так вы найдёте имя пакета MiAuto, не угадывая его:
adb shell pm list packages -3 | sort > before.txt
adb install -r MiAuto.apk
adb shell pm list packages -3 | sort > after.txt
diff before.txt after.txt
Пример вывода: строка вида > package: com.example.miauto — это и есть установленный пакет; используйте его в logcat и при удалении.

Что сделать: запустить установленное приложение на ГУ, перевести его в режим приёма (элемент запуска в интерфейсе — его точное название сверьте с README проекта), затем на телефоне открыть CarWith / Car+ / Jovi InCar и найти приёмник в списке доступных устройств.
Зачем: MiAuto реализует автомобильную сторону протокола ICCOA CarLink. Телефон ведёт себя как обычно — ищет автомобиль, — а приёмник ждёт подключения. Root не нужен именно потому, что обе стороны общаются по штатному протоколу, а не через системные хуки.
Как проверить: на ГУ появился экран трансляции или статус подключения, а в логе нет падений приложения.
adb logcat -c
adb logcat | grep -i -E "miauto|carwith|carplus|jovi|iccoa|carlink"
logcat — поток системных логов Android; -c очищает буфер, чтобы вы видели только события после запуска приёма. Если по этим тегам пусто, приложение пишет под другим тегом — уберите grep и смотрите поток целиком.
Пошаговая схема с ожидаемым результатом:
1. Запустить MiAuto на ГУ → приложение открылось без краша.
2. Включить приём → в интерфейсе отображается ожидание подключения (формулировку сверьте с README).
3. На телефоне открыть CarWith / Car+ / Jovi InCar → в списке появляется автомобиль.
4. Выбрать его → на ГУ начинает отображаться экран телефона.
5. Проверить IP ГУ, чтобы понимать, в какой подсети идёт обмен:
adb shell ip addr show wlan0
Пример вывода: строка inet 192.168.1.50/24 — адрес ГУ в вашей сети. Если у телефона адрес из другой подсети (например, 192.168.0.x), соединения не будет.

Что сделать: убедиться, что изображение идёт, ввод работает, и повторить подключение после разрыва.
Зачем: первое подключение часто проходит на кэшированных данных, а реальная пригодность видна только после переподключения и проверки активного окна.
Как проверить: активное окно на ГУ — приложение трансляции, экран обновляется, повторный коннект проходит без переустановки.
adb shell dumpsys window | grep -i mCurrentFocus
dumpsys window отдаёт состояние окон, mCurrentFocus — окно, которое сейчас в фокусе.
Пример вывода:
mCurrentFocus=Window{... u0 <package-приложения>}
Если в фокусе лаунчер, а не приложение приёмника, — приём не запустился или его вытеснила система.
Финальная проверка списком:
adb logcat нет повторяющихся ошибок соединенияУспех выглядит так: приложение на ГУ держит окно в фокусе, а телефон подключается к нему как к обычному автомобилю — без перезагрузки ГУ и без повторной установки APK.
Проблема. ADB не видит головное устройство
error: no devices/emulators foundadb kill-server && adb devices и подтвердить диалог на экране ГУ.Проблема. Установка блокируется системой
adb: failed to install MiAuto.apk: Failure [INSTALL_FAILED_USER_RESTRICTED: Install canceled by user]adb install -r MiAuto.apk.Проблема. Телефон не находит приёмник в CarWith / Car+ / Jovi InCar
logcat на ГУ нет событий подключения.adb shell ip addr show wlan0 и ping <IP-ГУ> с телефона; затем заново запустить приём.MiAuto ставится на автомобильную сторону, работает без root и без переходной коробки, а телефон подключается штатным приложением CarWith, Car+ или Jovi InCar. После успешной проверки трансляции имеет смысл зафиксировать рабочую сборку APK и параметры сети, чтобы повторное развёртывание занимало минуты; общая логика установки APK из репозитория разобрана в гайде Sideraven: как установить с GitHub и перенести закладки.
Нужен ли root на головном устройстве?
Нет. По заявлению авторов проекта, подключение беспроводное и root не требуется.
Нужна ли специальная переходная коробка-адаптер?
Нет, авторы заявляют работу без аппаратного адаптера: приёмник — это APK на стороне автомобиля.
Ставить MiAuto на телефон или на магнитолу?
На автомобильную сторону. Приёмник принимает поток от телефона; телефон использует своё штатное приложение (CarWith, Car+, Jovi InCar).
Какая версия Android нужна и где взять APK?
В описании репозитория PiggyBackBayonet/MiAuto минимальная версия Android и номер сборки не указаны — сверьтесь с README и разделом Releases на GitHub.