2013年1月15日 星期二

Add new internal resource in Android Jelly Bean

依據之前的經驗, 只要將新增的xml (string or icon, id)放到Android source 對應的res folder裡面之後在編譯Android 時就會自動加入到內部生成的R.java

但最近在porting Android JB時發現新增加的internal resource 並沒有被自動生成, 導致編譯時會發生 cannot find symbol的問題如下

cannot find symbol
symbol  : variable xxxxx
location: class com.android.internal.R.(...)

Google了一下後找到解決方法了, 但是不曉得這到底是不是JB的新機制(很不方便XD)

在 frameworks/base/core/res/MakeJavaSymbols.sed 裡有註明


# Run this on the errors output by javac of missing resource symbols,
# to generate the set of commands to have aapt generate
# the symbol for them.
#
# For example: make framework 2>&1 | sed -n -f MakeJavaSymbols.sed | sort -u

於是我在Android source tree的 root folder下打

$ make framework 2>&1 | sed -n -f frameworks/base/core/res/MakeJavaSymbols.sed | sort -u

執行完後就會產生
< java-symbol type="string" name="xxxxx" / >

把產生出來的這些內容直接貼到
frameworks/base/core/res/res/values/public.xml
就可以了

再來就照編譯Android 的方法來編譯就好了


Ref: http://www.cppblog.com/wythern/archive/2012/12/21/191394.html


沒有留言:

張貼留言