ASOP单独编译重要模块
-
- 单独编译preloader
- 单独编译LK
- 单独编译kernel
- 单独编译init模块
- 单独编译framework的services模块
- 打包system.img
- 打包boot.img
单独编译preloader
- 主要步骤
-
cd bootable/bootloader/preloader
-
./build.sh 2>&1 TARGET_PRODUCT=${PROJECT} | tee preloader_build.log
-
PROJECT由自己指定,比如我指定了8p1bsp,之后会在源码目录下的out/target/product/8p1bsp/obj/PRELOADER_OBJ/bin/目录下生成几个bin文件,其中preloader_8p1bsp.bin文件就是preloader bin文件
单独编译LK
单独编译LK时,同时也会再次编译logo.bin,可实现更新logo bin文件的目的。
- 方法一
cd bootable/bootloader/lk
make -j32 ${PROJECT} 2>&1 | tee lk_build.log
- 将 bootable/bootloader/lk/build-${PROJECT}/ 下生成的LK 和 LOGO bin文件拷贝到 out/target/product/[project]/
PROJECT由自己指定。对整个系统进行编译时,这些编译产物会存放在:
out/target/product/8p1bsp/obj/BOOTLOADER_OBJ/build-8p1bsp
有个问题是使用此方法不能生成带签名的img和bin文件
- 方法二
执行以下命令,指定编译lk模块
mmm vendor/mediatek/proprietary/bootable/bootloader/lk:lk -j8
编译前需执行以下操作:
- 删掉 out\target\product\项目名 目录中的lk和logo
- 删掉 out\target\product\项目名\obj\BOOTLOADER_OBJ\build-项目名 目录中的lk和logo的bin文件
- 删掉 out\target\product\项目名\obj\BOOTLOADER_OBJ\build-项目名\dev 目录中的logo目录
使用此方法编译完成后在 out\target\product\项目名 目录中会有新编译出的lk.img和logo.bin以及带签名的烧录文件
单独编译kernel
ASOP源码根目录下使用命令:mmm kernel-4.4:kernel -j8
编译成功后会在 out/target/product/项目名/ 目录中生成kernel文件
单独编译init模块
ASOP源码根目录下执行:
mmm system/core/init/
单独编译framework的services模块
-
先在framework/base目录下执行
mmm core/res/ 生成framework-res.apk
-
如果framework/base/services/下也有修改,也要编译:
mmm framework/base/services
-
然后再单独编译framework
mmm frameworks/base
相关的输出文件在输出目录下的system/framework中,包含:
services.jar
framework-res.apk
framework.jar
可利用adb命令将这些文件push到设备端的 system/framework 目录下。若需测试这两个新模块,需先杀掉所有使用该模块的进程,进程重启后会重新加载模块。
系统服务被杀掉后一般都会自动重启(由init控制)
打包system.img
使用以下命令:
make snod 或 make systemimage-nodeps
打包boot.img
使用以下命令:
make boot.img
编译完成后会在 out/target/product/项目名/ 目录中重新生成带签名和不带签名的boot.img