android Framework層新增資源方式
阿新 • • 發佈:2019-02-16
最近工作中,在移植輸入法去新的分支的時候,發現輸入法在彈出過程會強死,這是因為呼叫framework層的一個layout時查詢不到;於是找到這個資源,在framework層中添加了這個資源,但是發現編譯後輸入法仍然找不到這個資源。通過網路搜尋,找到了原因。在系統的framework/base/core/res/res中新增字串等資源,需要在framework/base/core/res/res/values/symbols.xml中同步新增資源字串,否則編譯會出錯。
比如在strings.xml中新增字串:
<string name="close_adb_title">Turn off ADB Debug</string>
那麼就需要在symbols.xml中新增:
`<java-symbol type="string" name="close_adb_title" />`
layout也同理。 在framework層中,symbols.xml 和 public.xml的作用是一樣的。到4.2才分成兩個檔案的,public.xml定義的資源進入android.R.java symbols.xml(共有資源),symbols.xml定義的資源進入com.android.internal.R.java(私有資源),並不是嚴格定義。在一個xml檔案裡也可以通過不同的標籤來控制資源是公共的還是私有的。記得在使用的時候,R.還是internal.R.需要分清楚,看你加的資源在哪個包裡