从源代码构建Android Automotive

cur*_*zen 11 android-source android-auto

TL; DR

从源代码构建Android Automotive之后,我该怎么做

  1. 运行汽车模拟器?
  2. 将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

我的问题是如何运行模拟器?在谷歌搜索并浏览一些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
Run Code Online (Sandbox Code Playgroud)

我还尝试将相关的(darwin-x86_64)文件从构建机器下载到我的Mac笔记本电脑并尝试在那里运行.模拟器启动但立即崩溃,带有巨大的本机堆栈跟踪.

我的问题的下一部分是如何在设备上安装此图像?我看到CarService.apk已生成.在设备上安装此APK是否足够?或者CarService和相关软件包是否应该成为需要完整闪存的系统映像的一部分?

4aR*_*gh7 4

这就是我让它在Android 8.1.0分支OPM5.171019.017上工作的方法:

$ source ./build/envsetup.sh
$ lunch aosp_car_x86_64-eng
$ emulator
Run Code Online (Sandbox Code Playgroud)

接下来是终端上的以下输出:

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

模拟器:警告:调整数据分区大小以匹配图像文件(550 MB > 200 MB)

警告:主机不支持请求的功能:CPUID.80000001H:ECX.sse4a [位 6]

警告:主机不支持请求的功能:CPUID.80000001H:ECX.sse4a [位 6]

Android 模拟器显示屏显示正在启动 Android Automotive。如果上述解决方案在userdebug模式下不起作用,我建议您尝试构建工程版本。请分享堆栈跟踪以供进一步分析。

关于你问题的第二部分。我认为您将 android auto 与 android auto 混淆了。

Android Auto 只是一个应用程序,可以使用 APK 和一些细微的调整来部署/设置,而 Android Automotive 是专门为汽车行业设计的 Android 定制版本,拥有自己的一套系统应用程序。因此,不能简单地通过安装APK来将其部署到设备上。