第二章:开发环境总览
好,咱们正式开始搭建环境之前,我先给你画个全景图。
说白了,就是让你心里有个底——到底需要哪些东西?这些东西是干嘛用的?整个流程走下来大概分几步?
我刚开始带团队的时候,发现很多新人一上来就急着装软件,结果装到一半发现缺这个少那个,折腾半天连个helloworld都跑不起来。嗯,咱们别走那个弯路。
2.1 硬件准备:你得有一块“板子”
做Camera HAL开发,光靠电脑是不行的。你得有一块真实的硬件板子。
我个人习惯把硬件分成三类,你根据自己情况选:
| 类型 | 代表平台 | 适用场景 | 我踩过的坑 |
|---|---|---|---|
| 开发板 | Rockchip RK3588、Qualcomm SA8295 | 学习、原型验证 | 记得买带摄像头接口的版本,别买错了 |
| 手机/平板 | Pixel 6/7、小米12等 | 驱动调试、性能测试 | 有些手机解锁bootloader很麻烦 |
| 工控机/模组 | NVIDIA Jetson、树莓派CM4 | 嵌入式产品开发 | 散热问题别忽视,跑Camera很吃CPU |
我的建议:如果你是初学者,先搞一块Rockchip的开发板。资料多、社区活跃、价格也相对友好。我当年就是拿RK3399入的门,虽然现在看有点老了,但基本功都是一样的。
2.2 软件清单:这些一个都不能少
硬件有了,接下来就是往里面灌软件。我把它们分成四大类,你照着准备就行。
2.2.1 操作系统
主机端我推荐Ubuntu 20.04或22.04 LTS。为什么?因为Android AOSP的官方支持就是Ubuntu。你用Windows也不是不行,但相信我,后面各种编译问题会让你怀疑人生。
板子端通常是Android或Linux。咱们这个课程主要基于Android,所以板子上得刷好Android系统。
2.2.2 编译工具链
这是重头戏。你需要:
- Android NDK:用来编译C/C++代码。版本建议r25以上。
- 交叉编译工具链:比如aarch64-linux-android-。这个NDK里自带,不用单独装。
- Make / CMake / Ninja:构建系统。Android现在默认用Soong(基于Ninja),但很多第三方库还是用CMake。
注意:我曾经因为NDK版本不对,折腾了整整两天。Android 12必须用NDK r23以上,否则编译出来的so库在目标板上直接段错误。所以,版本匹配很重要!
2.2.3 调试与测试工具
写代码只占30%的时间,剩下70%都在调试。这些工具你得玩熟:
- adb:Android调试桥。不用多说,必备。
- fastboot:刷机工具。板子变砖了全靠它救。
- GDB / LLDB:调试器。遇到crash的时候,你会感谢我的。
- dumpsys media.camera:查看Camera服务状态。这个命令我一天能用几十次。
- logcat:看日志。记得加过滤条件,不然信息量太大。
2.2.4 版本管理
Git是必须的。AOSP本身就是用Git管理的。建议你装个GitKraken或者SourceTree,可视化操作会省很多事。
2.3 整体搭建流程:五步走
好,东西都齐了。接下来怎么搭?我把它拆成五个步骤,每一步都有明确的目标:
- 第一步:准备主机环境
- 安装Ubuntu系统
- 配置网络、安装基础软件包
- 设置Git、SSH等
- 第二步:下载AOSP源码
- 用repo工具同步代码
- 选择合适的分支(比如android-13.0.0_r41)
- 这个过程比较慢,我建议你晚上睡觉前开始下载
- 第三步:配置编译环境
- 安装JDK、Python、必要的库
- 设置环境变量
- 验证编译工具链是否正常
- 第四步:编译并烧录系统
- 执行source build/envsetup.sh
- lunch选择目标设备
- make -j16开始编译(第一次编译可能需要2-3小时)
- 用fastboot烧录到板子
- 第五步:验证Camera HAL
- 确认系统能正常启动
- 运行Camera应用,看看能不能出图
- 用dumpsys检查HAL是否加载成功
核心要点:这五步是环环相扣的。前一步没做好,后面就会出各种奇怪的问题。我见过有人跳过第一步,直接在Windows上搞,结果编译出来的so库在板子上跑不了——因为链接器版本不对。
所以,别偷懒。一步一步来。
2.4 避坑指南:我替你踩过的雷
最后,分享几个我当年踩过的坑,你遇到了至少知道是怎么回事:
- 磁盘空间不够:AOSP源码加编译产物,轻松超过200GB。我建议你准备至少500GB的剩余空间。我曾经因为磁盘满了,编译到99%报错,那种感觉...嗯,你懂的。
- 内存太小:编译时建议16GB以上内存。8GB也能跑,但你会等到怀疑人生。
- 网络问题:下载AOSP需要科学上网。如果你在公司内网,记得配好代理。
- USB权限:Linux下adb需要udev规则。不然你插上板子,adb devices显示unauthorized。
好了,全景图给你画完了。下一章咱们就开始动手——先搞定主机环境。
有什么问题,随时翻回来看这张图。心里有数,手上不慌。