第2章:开发环境搭建
Ubuntu环境配置
做车机HAL开发,环境搭建是第一道坎。我见过太多人卡在这一步,其实没那么玄乎。
我个人习惯用Ubuntu 20.04 LTS。为什么?因为AOSP官方对它的支持最成熟。你非要用22.04也行,但有些依赖包得自己折腾,我踩过这个坑。
装好系统后,第一件事是换源。别用默认源,慢得让人抓狂。我一般用清华或中科大的镜像站。
# 备份原源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 替换为清华源(Ubuntu 20.04)
sudo sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list
sudo sed -i 's/security.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list
# 更新
sudo apt update && sudo apt upgrade -y
然后安装必备工具包。这里有个坑——千万别一股脑全装,有些包会冲突。我列个清单,都是经过验证的:
| 包名 | 用途 | 备注 |
|---|---|---|
| git | 版本控制 | 必须 |
| python3 | 脚本支持 | 建议3.8+ |
| openjdk-8-jdk | AOSP编译 | 别用11,会出问题 |
| flex bison | 词法/语法分析 | 编译内核需要 |
| libssl-dev | 加密库 | 缺了编译报错 |
AOSP源码下载
源码下载是重头戏。AOSP代码量巨大,动辄几十G。你想想看,光git仓库就有几百个。
我推荐用repo工具来管理。repo是Google专门为AOSP设计的,说白了就是一堆git仓库的管家。
# 安装repo
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
# 初始化仓库
mkdir ~/aosp
cd ~/aosp
repo init -u https://android.googlesource.com/platform/manifest -b android-12.0.0_r32
这里有个小技巧。我建议用 -b 参数指定分支。车机开发一般选Android 12或13的稳定分支。别用master,那是给Google内部用的,天天变。
同步代码时,加上 -j4 参数。为什么是4?因为网络带宽才是瓶颈,CPU再多也没用。我曾经用 -j16 跑,结果路由器直接挂了。
repo sync -j4 -c --no-tags
加 --no-tags 可以省不少空间。标签信息对车机开发来说基本没用。
交叉编译工具链安装
车机HAL开发,交叉编译是基本功。为什么?因为你的代码最终要跑在ARM架构的芯片上,而开发机是x86架构。
我常用的工具链有两种:
- GCC交叉编译器 - 传统方案,稳定可靠
- Clang/LLVM - Google推荐,AOSP默认用这个
对于车机场景,我建议两个都装。GCC用来做底层BSP调试,Clang用来编译HAL层代码。
# 安装GCC交叉编译器
sudo apt install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf
# 验证安装
arm-linux-gnueabihf-gcc --version
# AOSP自带Clang,在prebuilts目录下
cd ~/aosp
ls prebuilts/clang/host/linux-x86/
嗯,这里要注意。AOSP自带的Clang版本可能比较新,如果你的芯片厂商提供的BSP比较老,可能会有兼容性问题。我遇到过好几次,编译出来的so库在目标板上跑不起来。
解决办法是:用芯片厂商提供的工具链。比如高通平台用qnx工具链,NXP平台用Yocto生成的工具链。
核心要点:交叉编译工具链的选择,取决于你的目标芯片。别盲目用最新的,稳定第一。车机产品对稳定性要求极高,你总不想因为工具链问题导致OTA失败吧?
最后,配置环境变量。我习惯把工具链路径加到 ~/.bashrc 里:
export PATH=$PATH:~/aosp/prebuilts/clang/host/linux-x86/clang-r416183b/bin
export CROSS_COMPILE=aarch64-linux-android-
export CC=clang
export CXX=clang++
配置完记得 source ~/.bashrc 让它生效。
好了,环境搭建就这些。说白了就是三步:配好Ubuntu、拉下AOSP、装对工具链。别被那些花里胡哨的教程吓到,车机开发没那么玄乎。下一章我们开始写第一个HAL模块,到时候你就知道这些准备工作的价值了。