前言
Android一直在不斷的演進(jìn)哥蔚,系統(tǒng)層實(shí)現(xiàn)的邏輯也不斷的在變化姑隅,所以我們還是要不斷的學(xué)習(xí)、跟進(jìn)玫氢,否則一些技術(shù)知識(shí)就會(huì)過(guò)時(shí)≈闾耄現(xiàn)在針對(duì)Android 12的編譯步驟詳細(xì)講解一下
1. 編譯 framework
1.1 編譯 framework
Android 12和之前版本有所區(qū)別,此處不能使用make framework -j32 或者mmm framework/base -j32都是不行的漾峡,編譯命令如下:
make -j32 framework-minus-apex
參考示例:
編譯完成攻旦,輸出路徑
out\target\product\你的項(xiàng)目名稱(chēng)\system\framework\framework.jar
1.2 替換 framework.jar
執(zhí)行如下命令:
adb root
adb remount
adb shell "rm -rf /system/framework/arm"
adb push framework.jar /system/framework
adb shell sync
adb reboot
參考示例:
2. 編譯 services
如果 frameworks/base/services 下有修改代碼,則要編譯services.jar
2.1 編譯 services
編譯命令如下:
mmm framework/base/services -j32 或者 make -j32 services
參考示例:
編譯完成生逸,輸出路徑
out\target\product\你的項(xiàng)目名稱(chēng)\system\framework\services.jar
2.2 替換 services.jar
執(zhí)行如下命令:
adb root
adb remount
adb shell "rm -rf /system/framework/arm"
adb push services.jar /system/framework
adb shell "rm -rf /data/dalvik-cache/arm/system@framework@services.jar@classes.* "
adb shell sync
adb reboot
參考示例:
附錄
framework對(duì)應(yīng)的目標(biāo)文件
編譯文件路徑 | 手機(jī)路徑 |
---|---|
out\target\product\xxx\system\framework\framework.jar | system/framework/ |
out\target\product\xxx\system\framework\boot-framework.vdex | system/framework |
out\target\product\xxx\system\framework\arm\boot-framework.art | /system/framework/arm |
out\target\product\xxx\system\framework\arm\boot-framework.art.rel | /system/framework/arm |
out\target\product\xxx\system\framework\arm\boot-framework.oat | /system/framework/arm |
out\target\product\xxx\system\framework\arm\boot.art | system/framework/arm/ |
out\target\product\xxx\system\framework\arm\boot.oat | system/framework/arm/ |
out\target\product\xxx\system\framework\arm64\boot.art | system/framework/arm64/ |
out\target\product\xxx\system\framework\arm64\boot.oat | system/framework/arm64/ |
out\target\product\xxx\system\framework\arm64\boot-framework.art | /system/framework/arm64 |
out\target\product\xxx\system\framework\arm64\boot-framework.art.rel | /system/framework/arm64 |
out\target\product\xxx\system\framework\arm64\boot-framework.oat | /system/framework/arm64 |
services對(duì)應(yīng)的目標(biāo)文件
編譯文件路徑 | 手機(jī)路徑 |
---|---|
out\target\product\xxx\system\framework\services.jar | system/framework/ |
out\target\product\xxx\system\framework\services.jar.prof | system/framework |
out\target\product\xxx\system\framework\oat\arm64\services.art | system/framework/oat/arm64/ |
out\target\product\xxx\system\framework\oat\arm64\services.odex | system/framework/oat/arm64/ |
out\target\product\xxx\system\framework\oat\arm64\services.vdex | system/framework/oat/arm64/ |