2、开发环境搭建:Ubuntu系统安装与配置、JDK与SDK环境变量、Android Studio安装与配置、创建第一个Automotive模拟器、AOSP源码下载与编译环境准备
说实话,做车载IVI开发,环境搭建这一步能劝退不少人。我见过太多新手,代码还没写一行,先在环境上折腾了两三天,最后心态崩了。其实说白了,环境搭建就是个“一次配置,长期受益”的活儿。今天我就带你把这套东西捋顺了。
我个人习惯把环境搭建分成五个阶段:操作系统 → 基础工具链 → IDE → 模拟器 → 源码环境。这五个阶段环环相扣,缺一不可。下面我们一个一个来过。
2.1 Ubuntu系统安装与配置
做Android Automotive开发,Ubuntu几乎是标配。Windows?嗯,不是不行,但你会遇到各种奇奇怪怪的坑。我个人推荐Ubuntu 20.04 LTS或22.04 LTS,这两个版本对AOSP的兼容性最好。
安装时注意几点:
- 磁盘分区:至少留出150GB空闲空间。AOSP一次完整编译就要占用80-100GB,加上SDK、模拟器镜像,200GB都不嫌多。我在项目中吃过这个亏,第一次只分了100GB,编译到一半磁盘满了,那叫一个尴尬。
- 内存:建议16GB以上。编译AOSP时,8GB内存会卡到你怀疑人生。
- 交换分区:如果内存不够,至少配8GB swap。但别指望swap能替代内存,它只是救急用的。
装完系统后,第一件事是换源。国内用户一定要换阿里云或清华的源,不然下载速度会让你崩溃。
# 备份原源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 替换为清华源(Ubuntu 22.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
vim、git、curl、wget这些基础工具装上。后面每一步都离不开它们。
2.2 JDK与SDK环境变量配置
Android Automotive开发需要JDK 11或17。我个人习惯用OpenJDK 11,因为AOSP官方推荐的就是它。Oracle JDK也行,但没必要,OpenJDK完全够用。
# 安装OpenJDK 11
sudo apt install openjdk-11-jdk -y
# 验证安装
java -version
# 应该输出:openjdk version "11.0.xx"
接下来配置环境变量。这里有个坑——很多人把环境变量配在/etc/profile里,结果每次开新终端都要source一下。我建议配在~/.bashrc里,一劳永逸。
# 编辑 ~/.bashrc
vim ~/.bashrc
# 在文件末尾添加以下内容
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
export ANDROID_HOME=~/Android/Sdk
export PATH=$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:$PATH
# 保存后执行
source ~/.bashrc
SDK的话,我建议先别急着手动下载。等Android Studio装好后,通过SDK Manager来管理,会更方便。但环境变量可以先配好,指向你打算放SDK的目录。
java -version显示的是8,但AOSP编译需要11。排查了半天才发现是update-alternatives的优先级问题。所以建议只装一个JDK版本,省心。
2.3 Android Studio安装与配置
Android Studio的安装其实很简单,去官网下载Linux版本,解压就能用。但我建议你通过snap来安装,更新方便。
# 通过snap安装(推荐)
sudo snap install android-studio --classic
# 或者手动安装
# 下载 android-studio-xxxx-linux.tar.gz
tar -xzf android-studio-xxxx-linux.tar.gz
cd android-studio/bin
./studio.sh
第一次启动时,会引导你安装SDK组件。这里注意:一定要勾选“Android Automotive OS”相关的组件。默认情况下,Automotive的SDK平台是不包含在标准安装里的。
安装完成后,打开SDK Manager,确认以下组件已安装:
| 组件名称 | 版本要求 | 说明 |
|---|---|---|
| Android SDK Platform 33 | 33+ | Automotive应用开发的基础API |
| Android SDK Build-Tools | 33.0.0+ | 编译工具链 |
| Android Emulator | 最新版 | 模拟器本体 |
| Automotive OS System Images | 对应API Level | 这个最容易漏掉! |
2.4 创建第一个Automotive模拟器
好了,环境配好了,我们来创建第一个Automotive模拟器。这一步很有成就感,因为马上就能看到车载系统的界面了。
在Android Studio中,打开AVD Manager(工具栏上的小手机图标),点击“Create Virtual Device”。在设备列表里,选择“Automotive”分类。你会看到几个预设的车载设备,比如“Automotive Wide”或“Automotive Portrait”。
我建议选“Automotive (1024p landscape)”,这个分辨率最接近真实车载屏幕。
然后选择系统镜像。这里要注意:一定要选带有“Android Automotive”字样的镜像,而不是普通的“Android”镜像。两者完全不同,普通镜像没有车载的UI框架。
# 推荐的模拟器配置
设备: Automotive (1024p landscape)
系统镜像: Android 13.0 (API 33) - Automotive
RAM: 2048 MB
存储: 8 GB
启用: 硬件键盘 + 多窗口支持
点击Finish后,模拟器就会启动。第一次启动会比较慢,耐心等一两分钟。看到车载主界面出现的那一刻,嗯,成就感满满。
2.5 AOSP源码下载与编译环境准备
这是整个环境搭建中最耗时的一步。AOSP源码有多大?完整下载一次大概30-40GB,编译后占用80-100GB。所以磁盘空间一定要留够。
首先安装编译依赖:
# AOSP编译需要的依赖包
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
然后安装repo工具。repo是Google专门为管理多仓库AOSP设计的工具:
# 安装repo
mkdir -p ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
# 把repo加入PATH
export PATH=~/bin:$PATH
接下来初始化AOSP仓库。这里我建议只下载“master”分支或者某个稳定标签,比如android-13.0.0_r41。不要下载全部历史,那会多出几十GB。
# 创建工作目录
mkdir ~/aosp
cd ~/aosp
# 初始化仓库(以Android 13为例)
repo init -u https://android.googlesource.com/platform/manifest -b android-13.0.0_r41
# 同步源码(这一步最耗时,建议晚上挂机下载)
repo sync -c -j4
-j4表示用4个线程并行下载。如果你的网络带宽够大,可以改成-j8甚至-j16。但注意,线程数不是越大越好,我试过-j32,结果路由器直接挂了。
https://android.googlesource.com换成https://mirrors.tuna.tsinghua.edu.cn/git/AOSP即可。
源码下载完成后,验证一下编译环境:
# 进入源码目录
cd ~/aosp
# 设置编译环境
source build/envsetup.sh
# 选择编译目标(Automotive相关)
lunch aosp_car_x86_64-userdebug
# 测试编译(只编译一个小模块,验证环境)
make -j4 frameworks/base
如果编译没有报错,恭喜你,环境搭建成功了!
嗯,到这里,开发环境就全部搭好了。接下来你就可以开始真正的车载应用开发了。记住,环境搭建只是开始,后面的路还长着呢。但有了这套环境,你已经迈出了最坚实的一步。
公众号:蓝海资料掘金营,微信deep3321