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/lkmake -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
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/200644.html
標籤:其他
上一篇:第45屆國際大學生程式設計競賽 亞洲網上區域賽模擬賽 I題 Character Wheels【模擬】
下一篇:Android撰寫電話撥號器
