Android 修改framework下資源文件後如何編譯

在framework/base/core/res/res 下添加資源文件後需要先編譯資源 然後編譯framework 纔可正常引用

進入項目根目錄 cd frameworks/base/core/res/ 執行mm命令(原生或高通), 編譯 framework-res.apk

或 ./mk mm frameworks/base/core/res(mtk  依據各平臺編譯命令有所不同)

編譯完後com.android.internal.R中會生成資源的引用。 

在目錄frameworks/base/ 下執行mm 編譯 framework.jar  (原生或高通)

或 ./mk mm frameworks/base  (mtk  依據各平臺編譯命令有所不同)

 

如果 frameworks/base/services 下有修改,則也要編譯

frameworks/base/services/java/ 執行mm 編譯  services.jar

或./mk mm frameworks/base/services/java

 

執行如下命令

  adb remount

  adb push framework-res.apk /system/framework/

  adb push framework.jar /system/framework/

  adb push services.jar /system/framework/  (如果有修改的話)

 

有的系統還有編譯framework後還生成了secondary_framework.jar

也要push。

push完成之後,可以cd system/framework 進入目錄,

然後 ll 兩個小寫L命令 確認下是否push成功

 

adb reboot 重啓設備。

 


android中更改framework層代碼後怎操作纔可以看到更改後的效果?
1.下面方法適合真機:下載android源碼,然後編譯你修改的framwork的代碼,會生成framework.jar,然後push到system/framework目錄下,重啓機器!ok

2,下面方法適合模擬器:
(1):用unyaffs解壓,你下載的sdk目錄下system.img,然後替換其中的framework.jar,然後再壓縮成新的system.img;然後啓動模擬器就ok

(2):或者用直接全編譯源碼,用生成system.img去替換模擬器下面system.img也ok
 

android怎編譯framework
在開發過程中,尤其是Framework相關開發時,有時候需要重新編譯資源文件.編譯順序和注意事項如下:
1,資源文件位置:frameworks/base/core/res
2,編譯後生成的文件:framework-res.apk 另外com.android.internal.R會更新這個R.java所在目錄爲/out/target/common/R/com/android/internal.
3,編譯資源後,必須重新編譯framework.jar.
4,如果在frameworks/base/core/res執行mm是並不重新編譯,請使用toutch ### 命令
###代表目錄下的一個文件.
5,資源文件要小寫.
6,如果沒有必要,不要編譯資源文件,可以用其他方式使用資源,比如將資源使用adb push 傳到某個目
錄,程序中直接指定具體目錄.我在編譯資源過程中遇到一些奇怪的問題,比如有時候許多圖標會顯
示錯誤,原因猜測跟重新編譯資源有關,可以試着重新編譯services.jar並替換看看.

舉一個例子:假如我想在WindowManagerService.java中使用一個圖片資源pic.png.順序如下.
1,將文件pic.png拷貝到位置:frameworks/base/core/res/res/drawable下.
2,在frameworks/base/core/res/res/drawable目錄下執行touch pic.png.
3,進入目錄frameworks/base/core/res/ 執行mm命令, 編譯 framework-res.apk
4,執行完後com.android.internal.R 會新生成一個R.drawable.pic的引用.在程序中使用即可.
5,在目錄frameworks/base/ 下執行mm 編譯 framework.jar.
6,在WindowManagerService.java中使用com.android.internal.R.drawable.pic,使用完後保存文件.
7,進入目錄frameworks/base/services/java/ 執行mm 編譯 services.jar
8,替換機器上(虛擬機或者真機)的jar apk文件.
adb push framework-res.apk /system/framework/
adb push services.jar /system/framework/
adb push framework.jar /system/framework/
執行命令時注意framework-res.apk 的真實路徑.
9,reboot 機器,查看修改結果.大功告成!
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章