依據之前的經驗, 只要將新增的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
但最近在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
# 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
沒有留言:
張貼留言