从零搞定 Android.mk:把你的 Android Studio 项目编译成系统固件(附踩坑记录)目录一、背景:为什么要写 MK 文件?二、Android 编译系统简介三、Android.mk 核心语法3.1 一个最简 APK 的 mk3.2 常用变量速查3.3 编译 Java 库(共享 静态)四、从 Android Studio 项目提取 MK 的完整流程五、编译 SO 库的 MK 写法六、实战:把一个真实项目编进系统6.1 项目结构6.2 Android.mk 完整写法6.3 编进去了但闪退?常见问题排查七、Android.bp 写法(Android 8.0+ 推荐)八、真实踩坑记录九、总结与速查一、背景:为什么要写 MK 文件?平时用 Android Studio 开发,Gradle 帮我们搞定了所有编译的事。但很多时候你面对的不是标准 Android 项目:做系统开发(ROM 定制),需要把 App 直接编译进系统镜像维护 AOSP 源码,你的模块要和系统其他模块一起编写 HAL 层或者 Native 服务,只能用 ndk-build公司有自己的编译平台,不认 Gradle,只认 Android.mk这时候你就得自己写 MK 文件了。说白了,Android.mk 就是告诉编译系统:我这个模块叫啥、依赖了哪些库、源码在哪、编出来是个 APK 还是 SO 还是 JAR。二、Android 编译系统简介Android 源码的编译系统经历了三代演变:阶段工具配置文件现在还用?Android 4.x ~ 6.xMakeAndroid.mk老项目还在用Android 7.x ~ 8.xkati + ninjaAndroid.mk(转成 .ninja)兼容Android 8.0+SoongAndroid.bp(推荐)✅ 现在主流三者关系图:kati 转换Soong 转换blueprint 插件ninja 执行Android.mk.ninja 文件