从源代码构建Android Automotive

12

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和相关包应该是系统映像的一部分,需要完全刷写?


到目前为止,我还没有成功地让它工作起来。然而,从AOSP的提交记录来看,我认为这仍然是一项正在进行中的工作。我们可以希望谷歌在准备好时会发布更多文档。 - curioustechizen
@curioustechizen,“Android automotive”是独立的代码仓库还是“Android-8.0 Oreo”及其之后版本的一部分?如果是独立的,您能否指导我找到正确的源代码链接?目前看来,它似乎是“Android-8.0 Oreo”及其后续系列的一部分。 - Nihar
1
@Nihar 这不是一个独立的代码库,而是Android 8 Oreo及以上版本的一部分。请参见我在问题中提到的标签以及此答案中提到的标签:https://dev59.com/sVYO5IYBdhLWcg3wEddO#50230351请注意,汽车代码分布在几个包中 - 最相关的是packages/services/Car和hardware/libhardware/car。 - curioustechizen
2个回答

4

这是我在Android 8.1.0分支OPM5.171019.017上使其正常工作的方法:

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

紧接着终端输出以下内容:

emulator: 警告:系统分区大小已调整以匹配镜像文件(2562 MB > 200 MB)

emulator: 警告:数据分区大小已调整以匹配镜像文件(550 MB > 200 MB)

警告:主机不支持请求的特性:CPUID.80000001H:ECX.sse4a [bit 6]

警告:主机不支持请求的特性:CPUID.80000001H:ECX.sse4a [bit 6]

Android模拟器显示正在启动Android Automotive。 如果上述解决方案在userdebug模式下无法正常工作,建议您尝试构建工程版本。 请分享堆栈跟踪以进行进一步分析。
关于您问题的第二部分,我认为您将Android Auto和Android Automotive混淆了。
Android Auto只是一个应用程序,可以使用APK和一些微小的调整进行部署/设置,而Android Automotive是专门为汽车行业设计的定制版Android,具有自己的一套系统应用程序。因此,它不能仅通过安装APK在设备上简单地部署。

2

这是我的电脑环境,可以运行Android Car模拟器 Ubuntu 16,16G内存,1T磁盘。

最初的回答:

$ 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 

然后安卓模拟器启动,就像下面这样。 安卓模拟器

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接