当 AI 开始替代前后端的时候,为什么 Android 系统开发反而成了香饽饽?

10 阅读5分钟

AOSP 构建系统全解析(序言)

专栏:AOSP 构建系统全解析 源码版本:Android 17 作者:知昂七昂


一、为什么我来写这个专栏

这两年 AI 有多卷,不用我多说了吧。

前端切图仔被 Cursor 追着打,后端 CRUD 被 Copilot 追着打,算法岗一个岗位几千人投,连测试都开始被 AI 自动用例替代。朋友圈里天天有人在转"35 岁被裁员后开滴滴"、"转行做跨境电商"、"备考公务员"。

我不是说前后端不好,但是:当一份工作的门槛低到"一个实习生加一个 AI 就能干"的时候,你就要小心了。

那什么方向短时间内 AI 替代不了?

我的答案是:Android 系统开发。

为什么?

第一,一套完整的源码,300G+,AI 想要全文理解很难,它只能逐步推理一部分;

第二,得懂 Linux、懂编译原理、懂硬件、懂内核,这些东西是几十年积累下来的,不是训练几个月就能会的;

第三,出了问题得真的刷机、真的烧录、真的抓 log,才能解决;

第四,这个圈子很小,全国做手机/车机系统的公司就那么多,技术壁垒高,人员流动慢,不会轻易被替代。

我自己就是做手机系统的。每天打交道的就是 AOSP 源码、编译、刷机、调 log、框架framework等等。

今天这个专栏,我想从一个所有系统开发工程师入门都绕不开的东西讲起——AOSP 的构建系统


二、为什么一定要掌握构建系统?

很多人觉得:编译嘛,sourcelunchmake,完事。会跑命令不就行了?

错了。

构建系统是你理解整个 Android 系统的入口。

你想想:

  • 编译出来的 system.img 里面到底装了哪些东西?
  • 为什么有的 App 在 /system/app,有的在 /system/priv-app,有的在 /product/app
  • 为什么产品叫 xxx_car-userdebug,这个名字背后到底配了什么?
  • 为什么加了一个新 App,要改七八个地方才能在系统里看到?
  • 为什么改了一个系统属性,重启就生效,有的要重新编译?
  • 手机系统有哪些分区?这些分区的作用是啥?我自己想客制化一个分区怎么做?

这些问题,如果不去扒构建系统的代码,永远只能停留在"会跑命令"的层面。

掌握了构建系统,就知道:一个 Android 系统从源码到能刷机的镜像,中间到底经历了什么。

这是我们从"会改 App"到"会做系统"的第一道门槛。


三、这个专栏会讲什么?

我不会讲那种"什么是 makefile"的入门科普,那些东西网上一搜一大把。

这个专栏是从 Android 17 真实源码出发,讲手机厂/车机厂系统开发每天真的会遇到的问题

具体会覆盖这些内容(包含但不限于):

1. 构建系统全景

  • source build/envsetup.shout/ 产物,整条链路到底跑了什么
  • Soong、Blueprint、Kati、Ninja 四个角色分别是干嘛的
  • 为什么 Google 要从 Make 迁移到 Soong,现在直接敲 make 为什么会报错

2. 产品配置与 lunch

  • lunch 后面那个产品名是怎么被系统找到的
  • 一个新的手机/车机产品,要在哪些目录加哪些文件
  • build.prop 是怎么生成的,里面那些 ro.xxx 属性都是哪来的

3. 模块编译

  • Android.bpAndroid.mk 到底怎么写
  • mmmmam 三个命令的区别,什么时候用哪个
  • 怎么加一个新的系统 App,怎么加一个新的 native 库

4. 分区与镜像

  • boot.imgsystem.imgvendor.imgproduct.img 里面分别是什么
  • super 动态分区是怎么组装的
  • 怎么自己加一个厂商专属分区(这个需求手机厂车机厂都有)

5. 客制化实战

  • 怎么替换系统 App(SystemUI / Launcher / OOBE)
  • 怎么预装第三方 App 到系统里
  • 怎么改系统资源(字体/图标/品牌色)
  • 怎么加系统属性,怎么在运行时读

6. 安全与启动

  • AVB 校验是怎么回事,为什么改了 system 分区就起不来
  • 内核和 ramdisk 是怎么打包进 boot.img 的
  • OTA 升级包是怎么生成的

7. 车机专项

  • Automotive 构建和手机构建有什么不一样
  • 车机多屏、多用户是怎么在构建层面支持的

8. 工程化

  • 编译问题怎么排查
  • CI/CD 构建流水线怎么搭
  • 怎么写一个自己的编译脚本

四、能收获什么?

看完这个专栏,你应该能:

  1. 独立在 AOSP 源码里加一个新产品/新模块,不用每次都问老员工
  2. 说清楚从源码到刷机镜像的完整流程,面试被问到不慌
  3. 解决常见的编译问题,不用每次都 clean 重编
  4. 理解手机厂/车机厂的客制化套路,知道每个需求背后要改哪些地方
  5. 能和编译器、内核、驱动的同事对上话,知道改的东西最后会被怎么组装

五、写在最后

这个专栏没有鸡汤,没有"三天精通 Android",就是一篇一篇带你看真实源码、改真实代码、解决真实问题。

如果你也是做系统开发的,或者想转行做系统开发,欢迎关注,大家互相探讨。

我们下一篇,从 source build/envsetup.sh 这行命令开始。