1、编译环境
2、整编源码
- 进入Android源码根目录
cd AOSP
- 初始化环境
source build/envsetup.sh
- 清除缓存
make clobber
- 选择编译目标
// 选择编译目标
lunch
// 因为本次是在虚拟机中运行,这里使用x86
lunch aosp_x86_64-eng
- 编译
这里的 -j16 是代表编译的时候的线程数,一般是CPU核心数的1~2倍,电脑配置差点,就减少。
make -j16
- 等待编译结束,这个过程比较漫长,我的 i5-9400F CPU, 32G 内存,全固态硬盘,编译了两个半小时…电脑配置好的话,会更快。
- 编译结束,运行虚拟机
emulator
- 虚拟机启动卡在开机界面时,可以尝试关闭 gpu 和配置大小
3、单编
单编就是编译某个模块,比如 Settings ,会在 out 目录对应的产品有 Settings.apk , 例如:out/target/product/generic_x86/system/priv-app/Settings/Settings.apk,这是可以直接安装的。
1、source build/envsetup.sh
2、lunch
3、选择单编版本序号
4、编译
4.1、mmm
编译指定⽬录下的模块,但不编译它所依赖的其它模块。
4.2、mm
先进⼊⽬录:
再编译
mm
编译当前⽬录下的模块,它和 mmm ⼀样,不编译依赖模块。
4.3、mma
编译当前⽬录下的模块及其依赖项。
4.4、mmma [module_path]
编译指定路径下所有模块,且包含依赖
4.5、make
make: 不带任何参数则是编译整个系统
单个模块编译,会把该模块及其依赖的其他模块⼀起编译,会搜索整个源代码来定位 MediaProvider
模块所使⽤的 Android.mk ⽂件,还要判断该模块依赖的其他模块是否有修改。
make snod
如果我们修改代码,想看效果,怎么办?
1、可以在编译完成后,借助 adb install -r apk路径 直接将⽣成的 apk ⽂件安装到设备上,如果
不是 APK,直接 push 对应的⽂件。
2、可以编译好完成后,再使⽤ make snod ,重新⽣成 system.img,再运⾏模拟器也可。