2014年12月8日 星期一

添加資源到android源碼中-修改framework層

http://fanli7.net/a/caozuoxitong/Android/2012/1026/243019.html

編譯帶有資源的jar包,需要更改frameworks層,方法如下:
 一.增加png類型的圖片資源
    1.將appupdate模塊所有用到的png格式圖片拷貝到framework/base/core/res/res/drawable-mdpi裏。但是要確保沒有與原生的沒有重名文件。
2.在framework/base/core/res/res/values/public.xml文件裏增加對這些圖片的聲明。(例: <public type="drawable"name="upg_btn_default_small_normal" id="0x010800b4" />,此id要保證唯一,以drawable類型的最後一個id为基數增加)
3.framework/base/core/res/res/ 下mm編譯
4. \Honeycomb下 make update-api
 二.增加string資源
    1.將appupdate模塊定義的string.xml裏面的所以string拷貝到framework/base/core/res/res/values/string.xml裏。但是確保沒有重名的。
2.在framework/base/core/res/res/values/public.xml文件裏增加對這些string的聲明。(例:<publictype="string" name="upg_app_name" id="0x01040017"/>此id要保證唯一,以string類型的最後一個id为基數增加)
3.framework/base/core/res/res/ 下mm編譯
4. \Honeycomb下 make update-api
 三.增加layout資源
    1.將appupdate模塊的layout文件裏定義的5個xml文件拷貝到在framework/base/core/res/res/layout裏。但是要確保沒有重名文件被覆蓋。
2.在framework/base/core/res/res/values/public.xml文件裏增加對這些layout的聲明。(例:<publictype="layout" name="appupg_checkspace"id="0x01090018" />此id要保證唯一,以layout類型的最後一個id为基數增加)
3.framework/base/core/res/res/ 下mm編譯
4. \Honeycomb下 make update-api
說明:若layout中包含xml,直接把xml拷貝到framework相應目錄下。例如(1)button的selector。將appupdate模塊的drawable/common_btn_selector.xml文件拷貝到framework/base/core/res/res/drawable裏,確保沒有重名文件。
(2)將appupdate模塊的anim/loading.xml文件拷貝到framework/base/core/res/res/anim裏,確保沒有重名文件。
 四.增加style資源
    1.將appupdate模塊的style文件裏定義的所有style拷貝到framework/base/core/res/res/values/style.xml裏。確保沒有覆蓋原生的style.
    2.在framework/base/core/res/res/values/public.xml文件裏增加對這些style的聲明。
3.framework/base/core/res/res/ 下mm編譯
4. \Honeycomb下 make update-api
五.增加color資源
 1.將appupdate模塊的style文件裏定義的所有style拷貝到framework/base/core/res/res/values/color.xml裏。確保沒有覆蓋原生的color.
    2.在framework/base/core/res/res/values/public.xml文件裏增加對這些color的聲明。
3.framework/base/core/res/res/ 下mm編譯
4. \Honeycomb下 make update-api
六.增加資源id
 1.在framework/base/core/res/res/values/ids.xml裏定義你jar中所用的id(R.id)*)。確保沒有覆蓋原生的.
    2.在framework/base/core/res/res/values/public.xml文件裏增加對這些id的聲明。
3.framework/base/core/res/res/ 下mm編譯
4. \Honeycomb下 make update-api
最後,eclipse源碼中要修改以下:
1.  把R.*.*全部替換成android.R.*.*例如R.layout.appupg_tip_dialog 要更換为android.R.layout.appupg_tip_dialog
2.      資源文件中對資源的調用需要添加android:如<TextView android:text="@ string/upg_tip"要改成<TextViewandroid:text="@android:string/upg_tip"
3.      Import *.*.*.R刪除。
linux下jar包路徑
另,要想在eclipse環境下編譯修改後的應用自升級jar。
1,  從編譯的源碼中拷貝framework.jar及framework-res.apk兩個文件,解壓縮後。從framework.jar中拷貝出android文件夾,從framework-res.apk拷貝出res文件夾,然後添加到android.jar包中。替換自升級工程的android.jar。然後把res文件夾下出現X的文件刪除即可。
應用自升級修改方法
資源修改要通過frameworks層,修改後要在源碼中編譯。