android系統資源新增
阿新 • • 發佈:2019-01-03
android新增系統資源 原始檔路徑: /frameworks/base/core/res/res 編譯後路徑: /out/target/product/專案名稱/system/framework/framework-res.apk R.Java檔案: /out/target/common/R/com/android/internal/R.Java 資源的新增: 如在framework-res中新增一個共有字串,需修改以下檔案: frameworks/base/core/res/res/values/public.xml frameworks/base/core/res/res/values/strings.xml 如在framework-res中新增一個私有字串,需修改以下檔案: frameworks/base/core/res/res/values/symbols.xml frameworks/base/core/res/res/values/strings.xml 新增完成後進行 mmm framework/base/core/res 編譯,然後檢查是否新增到R.java檔案中. 新增成功後 在程式碼中使用 com.android.internal.R.string.xxx 來引用. 在對系統新增了一些資源進行原始碼編譯時會遇到 com.android.internal.R.XX can not find 的問題,可使用(make update-api)來更新api, ./frameworks/base/api/current.txt 會被重新生成. public.xml 與 symbols.xml public.xml中宣告的是公共資源,所有應用程式都可以呼叫,symbols.xml中宣告的是非公共資源,僅供系統內部使用,不對app開放. public.xml 中欄位格式為 <public type="attr" name="networkSecurityConfig" id="0x01010527" /> symbols.xml中欄位格式為<java-symbol type="string" name="use_times"/> symbols.xml是在4.2後,將系統私有的資源分離成了單獨的檔案. 若將私有的宣告新增在了public.xml檔案中,則編譯時會報錯,可採用 make framework 2>&1 | sed -n -f MakeJavaSymbols.sed | sort -u , 此命令將會列出所有新增的私有資源,並將它們拷貝到symbols.xml中. 另外:若果新增其他資源,如layout,drawable 需要在對應的路徑下的檔案新增欄位即可. 資源編譯: 首先到res目錄下面執行mm,得到framework-res.apk 然後在framwork中使用了新新增資源的目錄下執行mm, 生成 *.jar 最後到/framework/base 下執行mm 重新生成最新的 framework.jar