第二章:开发环境总览

好,咱们正式开始搭建环境之前,我先给你画个全景图。

说白了,就是让你心里有个底——到底需要哪些东西?这些东西是干嘛用的?整个流程走下来大概分几步?

我刚开始带团队的时候,发现很多新人一上来就急着装软件,结果装到一半发现缺这个少那个,折腾半天连个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 整体搭建流程:五步走

好,东西都齐了。接下来怎么搭?我把它拆成五个步骤,每一步都有明确的目标:

  1. 第一步:准备主机环境
    • 安装Ubuntu系统
    • 配置网络、安装基础软件包
    • 设置Git、SSH等
  2. 第二步:下载AOSP源码
    • 用repo工具同步代码
    • 选择合适的分支(比如android-13.0.0_r41)
    • 这个过程比较慢,我建议你晚上睡觉前开始下载
  3. 第三步:配置编译环境
    • 安装JDK、Python、必要的库
    • 设置环境变量
    • 验证编译工具链是否正常
  4. 第四步:编译并烧录系统
    • 执行source build/envsetup.sh
    • lunch选择目标设备
    • make -j16开始编译(第一次编译可能需要2-3小时)
    • 用fastboot烧录到板子
  5. 第五步:验证Camera HAL
    • 确认系统能正常启动
    • 运行Camera应用,看看能不能出图
    • 用dumpsys检查HAL是否加载成功

核心要点:这五步是环环相扣的。前一步没做好,后面就会出各种奇怪的问题。我见过有人跳过第一步,直接在Windows上搞,结果编译出来的so库在板子上跑不了——因为链接器版本不对。

所以,别偷懒。一步一步来。

2.4 避坑指南:我替你踩过的雷

最后,分享几个我当年踩过的坑,你遇到了至少知道是怎么回事:

  • 磁盘空间不够:AOSP源码加编译产物,轻松超过200GB。我建议你准备至少500GB的剩余空间。我曾经因为磁盘满了,编译到99%报错,那种感觉...嗯,你懂的。
  • 内存太小:编译时建议16GB以上内存。8GB也能跑,但你会等到怀疑人生。
  • 网络问题:下载AOSP需要科学上网。如果你在公司内网,记得配好代理。
  • USB权限:Linux下adb需要udev规则。不然你插上板子,adb devices显示unauthorized。

好了,全景图给你画完了。下一章咱们就开始动手——先搞定主机环境。

有什么问题,随时翻回来看这张图。心里有数,手上不慌。