一 : 編譯framework資源文件
-
如果修改android framework資源文件,需要先編譯資源文件,然后再編譯framework才可以正常引用,
進入項目目錄 cd work/source/frameworks/base/core/res/ 執行mm 編譯 framework-res.apk(原生或高通)
編譯完后com.android.internal.R中會生成資源的引用。
-
在目錄 work/source/frameworks/base/ 下執行mm 編譯 framework.jar (原生或高通)
-
如果 frameworks/base/services 下有修改,則也要編譯,在目錄 work/source/frameworks/base/services/java/ 執行mm 編譯services.jar
二 : 驗證修改后的效果
adb root
adb remount
adb push framework-res.apk /system/framework/
adb push framework.jar /system/framework/
adb push secondary_framework.jar /system/framework/ (如果存在secondary_framework.jar,需要push)
adb push services.jar /system/framework/ (如果service有修改,需要push)
adb reboot 重啟設備。
adb push可執行文件制作教程,有興趣的朋友可以參考adb push可執行文件制作教程
三 : 總結
在開發過程中,尤其是framework相關開發時,有時候需要重新編譯資源文件.編譯順序和注意事項如下(均在源碼根目錄):
- 資源文件位置:frameworks/base/core/res,編譯后生成的文件:framework-res.apk 另外com.android.internal.R會更新這個R.java所在目錄/out/target/common/R/com/android/internal.
- 編譯資源后,必須重新編譯framework.jar.
- 如果在frameworks/base/core/res執行mm時並不重新編譯,請使用toutch filename(文件名)或者mm -B
- 資源文件要小寫.
- 如果沒有必要,盡可能不要編譯資源文件,可以用其他方式使用資源,可用adb push到指定的文件夾進行引用。
喜歡源碼分析系列可參考其他文章:
Android源碼分析(一)-----如何快速掌握Android編譯文件