2、开发环境搭建:AOSP源码下载、编译环境配置(Ubuntu),模拟器与真机调试环境搭建
说实话,搭建Android Automotive OS的开发环境,是很多人入门时第一个“劝退点”。
我记得自己第一次搞AOSP编译,光同步源码就花了整整两天——网速慢、磁盘不够、依赖包装错……各种坑踩了个遍。但只要你把环境搭对了,后面写代码、调试、跑模拟器,都会顺很多。
这一章,我就带你一步步搞定这些事。
核心要点:开发环境搭建 = 源码下载 + 编译环境 + 调试环境。缺一不可。
2.1 AOSP 源码下载:别让网速卡住你
下载AOSP源码,说白了就是拉取Google的Git仓库。但AAOS的源码和普通手机版AOSP不太一样——它多了车机相关的模块,比如CarService、HVAC控制、车载蓝牙协议栈等等。
第一步:安装 repo 工具
repo是Google专门为AOSP设计的仓库管理工具。我个人习惯把它放在 ~/bin 目录下:
mkdir -p ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
export PATH=~/bin:$PATH
小提示:记得把 export PATH=~/bin:$PATH 加到 ~/.bashrc 里,不然每次开终端都要重新执行。
第二步:初始化并同步源码
这里要选对分支。AAOS 的分支名通常带 android-14.0.0_rXX 或 android-13.0.0_rXX 这样的标记。我建议用最新的稳定版:
mkdir aaos-source
cd aaos-source
repo init -u https://android.googlesource.com/platform/manifest -b android-14.0.0_r30
repo sync -j4 -c
-j4 表示用4个线程并行下载。如果你的CPU核心多,可以改成 -j8 或 -j16。但注意——网速才是瓶颈,线程数不是越多越好。
警告:整个AOSP源码同步下来大约 80GB~120GB,编译后还会膨胀到 200GB+。请确保你的磁盘至少有 300GB 空闲空间。我曾经因为磁盘写满导致编译到一半崩溃,白白浪费了3小时。
2.2 编译环境配置:Ubuntu 下的“标准动作”
我个人推荐用 Ubuntu 20.04 LTS 或 22.04 LTS。为什么?因为Google官方文档里测试最多的就是这两个版本。你非要用Arch Linux当然也行,但遇到问题别来找我——社区支持少很多。
安装必要依赖包
直接跑下面这条命令,把常用的开发工具链一次性装好:
sudo apt update
sudo apt install -y git-core gnupg flex bison build-essential \
zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 \
libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev \
lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig
嗯,这里要注意——不同Ubuntu版本可能缺个别包。比如Ubuntu 22.04里 libncurses5 可能被 libncurses6 替代了。如果报错,用 apt search 找一下替代包名就行。
安装 JDK
AOSP 14 需要 JDK 17。别用OpenJDK 11,编译会报错:
sudo apt install openjdk-17-jdk
java -version # 确认版本
配置 ccache 加速编译
这个我强烈建议你配一下。ccache 可以缓存编译中间文件,第二次编译能快 30%~50%。
sudo apt install ccache
echo 'export USE_CCACHE=1' >> ~/.bashrc
echo 'export CCACHE_DIR=/home/你的用户名/.ccache' >> ~/.bashrc
source ~/.bashrc
ccache -M 50G # 设置缓存上限50GB
经验之谈:我第一次编译AAOS时没配ccache,每次改一行代码都要重新编译半小时。后来配了ccache,改个Java文件再编译,5分钟就搞定了。你说值不值?
2.3 模拟器与真机调试环境搭建
环境搭好了,源码也下了,接下来就是跑起来看看效果。
2.3.1 模拟器:Cuttlefish
AAOS 官方推荐用 Cuttlefish 模拟器。它比传统的 Android Emulator 更贴近车机硬件。
编译 Cuttlefish 镜像
cd aaos-source
source build/envsetup.sh
lunch aosp_cf_x86_64_auto-userdebug
make -j8
编译完成后,启动模拟器:
source build/envsetup.sh
lunch aosp_cf_x86_64_auto-userdebug
launch_cvd
第一次启动会创建虚拟设备,大概等 2~3 分钟。你会看到一个车机中控屏的界面——嗯,那一刻还是挺有成就感的。
小技巧:如果启动失败,检查一下 /var/run/docker.sock 权限。Cuttlefish 依赖 Docker 来管理虚拟设备。我曾经被这个坑了整整一个下午。
2.3.2 真机调试:fastboot + adb
真机调试其实和普通 Android 设备差不多。但车机设备通常没有 USB 调试开关——你需要通过工程模式打开。
刷机流程
# 进入 fastboot 模式
adb reboot bootloader
# 刷入编译好的镜像
fastboot flashall -w
# 重启
fastboot reboot
连接 adb
车机一般通过 USB 或以太网连接。如果是以太网:
adb connect 192.168.1.100:5555
注意:真机调试时,一定要确认车机的 ro.debuggable 属性为 1。否则 adb 会提示 unauthorized。我遇到过一台设备怎么都连不上,最后发现是编译时选错了 user 版本,应该用 userdebug 版本。
2.4 避坑指南:我踩过的那些坑
- 磁盘空间不足:我曾经在只有 120GB 的 SSD 上尝试编译,结果到 97% 时磁盘写满,编译失败。后来换了 500GB NVMe,再也没出过问题。
- Python 版本冲突:AOSP 14 需要 Python 3.8+。如果你的系统默认 Python 是 3.6,repo 工具会报错。用
update-alternatives切换一下版本就好。 - 网络超时:国内下载 AOSP 源码经常断连。我建议用清华或中科大的镜像站:
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-14.0.0_r30
- 内存不足:编译时如果
make进程被 kill,多半是内存不够。至少需要 16GB RAM,32GB 更稳。我自己的开发机是 64GB 内存,编译时开 16 个线程毫无压力。
好了,环境搭建这部分就到这里。把这些步骤走通,你的 AAOS 开发之路就算正式开始了。
公众号:蓝海资料掘金营,微信deep3321