Строительство Android-автотехники из источника

TL; DR

После создания Android Carotive из источника, как я

  • Запустите авто-эмулятор?
  • "Установить" CarService и связанные с ним пакеты на устройство?

Подробнее

Я пытаюсь построить Android Automotive из источника. Я могу успешно создать его, используя следующие команды:

$ repo init -u https://android.googlesource.com/platform/manifest -b android-8.0.0_r11 $ source build/envsetup.sh $ lunch car_emu_x86_64-userdebug $ make -j8 V=1 &>> make.log

Мой вопрос: как запустить эмулятор? После googling и прохождения некоторых сообщений stackoverflow я наткнулся на это:

Сначала я устанавливаю переменную env в командной строке (эмулятор использует это, чтобы определить, какой эмулятор запускаться)

export ANDROID_PRODUCT_OUT=/path/to/build_root

Затем я создал файл car-emulator.sh и поместил его в него (сборка была выполнена на машине Ubuntu)

#!/usr/bin/env bash

ANDROID_BUILD_OUT=/path/to/build_root/out
PREBUILT=/path/to/build_root/prebuilts
EMULATOR_OUT=${ANDROID_BUILD_OUT}/target/product/car-x86_64

${PREBUILT}/android-emulator/linux-x86_64/emulator \
    -sysdir ${EMULATOR_OUT} \
    -system ${EMULATOR_OUT}/system.img \
    -ramdisk ${EMULATOR_OUT}/ramdisk.img \
    -data ${EMULATOR_OUT}/userdata.img \
    -kernel ${PREBUILT}/qemu-kernel/x86_64/kernel-qemu \
    -scale 0.7 \
    -memory 512 \
    -partition-size 1024

Я также попытался загрузить соответствующие файлы (darwin-x86_64) с машины сборки на свой ноутбук Mac и попытался запустить там. Эмулятор запускается, но сбой происходит сразу с огромной трассировкой основного стека.

В следующей части моего вопроса, как установить это изображение на устройство? Я вижу, что CarService.apk был сгенерирован. Достаточно ли установить этот APK на устройстве для его работы? Или должен ли CarService и связанные с ним пакеты быть частью образа системы, который должен быть свернут целиком?

Ответ 1

Вот как я заставил его работать на ветке Android 8.1.0 OPM5.171019.017:

$ source ./build/envsetup.sh
$ lunch aosp_car_x86_64-eng
$ emulator

Далее следует вывод на терминал:

эмулятор: ВНИМАНИЕ: размер системного раздела настроен в соответствии с файлом образа (2562 МБ> 200 МБ)

эмулятор: ВНИМАНИЕ: размер раздела данных настроен в соответствии с файлом изображения (550 МБ> 200 МБ)

предупреждение: хост не поддерживает запрошенную функцию: CPUID.80000001H: ECX.sse4a [бит 6]

предупреждение: хост не поддерживает запрошенную функцию: CPUID.80000001H: ECX.sse4a [бит 6]

И дисплей эмулятора Android показывает загрузку Android автомобильной. Я бы порекомендовал вам попробовать собрать инженерную версию, если вышеприведенное решение не работает в режиме отладки пользователя. Пожалуйста, поделитесь трассировкой стека для дальнейшего анализа.

О второй части вашего вопроса. Я думаю, что вы путаете андроид авто с андроид автомобилестроением.

Android Auto - это просто приложение, которое можно развернуть/настроить с помощью APK и незначительных настроек, в то время как Android Automotive - это специализированная версия Android, разработанная специально для автомобильной промышленности с собственным набором системных приложений. Поэтому его нельзя просто развернуть на устройстве, просто установив APK.

Ответ 2

Это мой компьютер env, который может запускать Android Car Emulator Ubuntu 16 Ram 16G Ram, 1T Disk

$ repo init -u https://android.googlesource.com/platform/manifest -b android-9.0.0_r39
$ source build/envsetup.sh
$ lunch car_emu_x86_64-userdebug
$ make -j8
$ emulator 

и затем Android Emulator загружается так же, как показано ниже.

Эмулятор Android