ASOP源码中单独编译preloader/lk/kernel/framework模块

单独编译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

编译前需执行以下操作:

  1. 删掉 out\target\product\项目名 目录中的lk和logo
  2. 删掉 out\target\product\项目名\obj\BOOTLOADER_OBJ\build-项目名 目录中的lk和logo的bin文件
  3. 删掉 out\target\product\项目名\obj\BOOTLOADER_OBJ\build-项目名\dev 目录中的logo目录

使用此方法编译完成后在 out\target\product\项目名 目录中会有新编译出的lk.imglogo.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

猜你喜欢

转载自blog.csdn.net/weixin_41388144/article/details/109406241
今日推荐