2012年11月9日 星期五

Android JellyBean 4.1 Internal Resource

Android-4.1-Jelly-Bean-Logo

這幾天在改一個 Code ,

發現了一個問題,是之前 Android 4.0 不存在的。

 

在 framework 裡面增加 string 等 resource 的時候,

會發生 .java 程式在使用該新增的 resource

com.android.internal.R.string.xxxxx

編譯失敗的情況,訊息如下:

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

經過 Google 搜尋之後找到了解決辦法,

(以下參考『给Android JellyBean添加internal resource』)

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

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

重新編譯會產生

<java-symbol type="string" name="xxxxx" />

把這行加入 frameworks/base/core/res/res/values/public.xml ,

接著再重新編譯一次即可,

我的做法是,

直接在 frameworks/base/core/res/res/values/public.xml 裡面新增該行,

之後編譯就可以過了, resource 也可以順利被 java 程式取得。

 

以上,提供大家一個參考。

沒有留言:

張貼留言