TL;DR
如何在从源代码构建 Android Automotive 后运行汽车模拟器并安装 CarService 及其相关包到设备上?
Details
我正在尝试从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
我的问题是如何运行模拟器? 经过谷歌搜索和阅读一些stackoverflow帖子后,我找到了这个:
首先,我通过命令行设置了一个环境变量(模拟器使用此变量确定要启动哪个模拟器)
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和相关包应该是系统映像的一部分,需要完全刷写?