Как работают Android Auto SDK и Android Auto Host и как начать разработку
Android Auto SDK позволяет создавать приложения (медиа, навигация, сообщения) для отображения и управления на автомобильном экране; Android Auto Host — библиотека для автопроизводителей, чтобы их системы запускали и рендерили эти приложения. Ниже — компактный практический план старта.
Что такое SDK и что такое Host — ключевая разница
- Android Auto SDK (Car App Library) — набор API/шаблонов для разработки car‑ready приложений: Media, Navigation, Conversation и др. Шаблоны ограничивают UI, чтобы минимизировать отвлечение водителя, и дают готовые элементы управления (MediaSession, templates).
- Android Auto Host — компонент для OEM/встраиваемых систем: принимает контент от приложений, рендерит интерфейс, обрабатывает ввод и системные ограничения (скорость, режим движения). Хост нужен, если система работает без смартфона (native host).
Начинайте с медиаприложения — самый простой путь: готовые шаблоны и меньше ограничений по состояниям.
Системные требования и необходимые зависимости
- Android Studio 2023+; Android Gradle Plugin 8.0+; Target SDK 34+ (Android 14) рекомендован.
- Для разработки приложения:
- dependency: com.google.android.libraries.car.app:car-app:1.4.0 (пример версии).
- Тестирование: Desktop Head Unit (DHU) и реальный head unit/эмулятор производителя.
- Для хоста:
- dependency: androidx.car.app:app-hosting:1.1.0 (пример).
- Целевая платформа: Android 10+ на устройстве, специальные разрешения (например, android.car.permission.CAR_SPEED) и поддержка рендеринга.
- Процедура верификации: при публикации приложений для Android Auto проводится проверки безопасности и UI‑правил (обычно несколько дней).
Быстрый пошаговый старт с Android Auto SDK
- Создайте проект в Android Studio (Empty Activity).
- Добавьте в build.gradle (app):
implementation "com.google.android.libraries.car.app:car-app:1.4.0"
- Зарегистрируйте приложение в AndroidManifest.xml (пример для медиаприложения):
<activity android:name=".MyCarApp" android:exported="true" android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="androidx.car.app.CarAppCategory.MEDIA" />
</intent-filter>
</activity>
- Реализуйте Screen и Template (Kotlin):
class MediaScreen(carContext: CarContext) : Screen(carContext) {
override fun onGetTemplate(): Template {
return PaneTemplate.Builder(
Pane.Builder()
.addRow(Row.Builder().setTitle("Мой плейлист").build())
.build()
).setHeaderAction(Action.APP_ICON).build()
}
}
- Тестируйте сначала на DHU, затем на реальном head unit; DHU не ловит ~20% багов — проверяйте оба варианта.
- Подготовьте APK для валидации и отправки на тестирование/сертификацию по требованиям Android Auto.
UI не должен требовать зрительного внимания более 2 секунд; нарушение правил приводит к отклонению при проверке.
Настройка Android Auto Host (кратко)
- Добавьте хост‑зависимость и создайте HostActivity, унаследованную от AppHostingActivity.
- Переопределите callbacks для рендеринга и управления сессиями.
- Пройдите интеграционные тесты в реальном автомобиле/эмуляторе производителя и подайте на сертификацию.
Частые ошибки
- Пропуск intent‑фильтров или категория CarAppCategory — приложение не будет найдено хостом.
- Тестирование только на DHU — баги на реальных HW остаются незамеченными.
- Использование кастомных view вместо шаблонов — высокая вероятность отклонения.
- Неправильно заданные разрешения для доступа к телеметрии (скорость, сенсоры).
FAQ
- Нужно ли иметь доступ к OEM хосту для разработки приложения?
- Нет: приложение можно разрабатывать и тестировать на DHU; для полного теста нужен реальный head unit.
- Какую сложность выбрать для первого релиза?
- Начните с медиаприложения: простая логика, минимум экранов, быстрый цикл тестирования.
- Сколько времени занимает сертификация?
- Обычно проверка занимает несколько дней, но зависит от объёма изменений и соответствия требованиям.
Готовы начать? Соберите минимальный прототип за пару часов: добавьте зависимость, реализуйте одну Screen и запустите на DHU — это позволит понять основные ограничения и ускорит дальнейшую разработку.