++wythern++

X presents Y for a better Z

给Android JellyBean添加internal resource

想给Androird JellyBean 4.1.0的framework里面添加一个res,把xml写好以后编译时候报错

        int ticker = com.android.internal.R.string.xxxxxxxxxx;
                                                  ^
frameworks/base/services/java/com/android/server/StatusBarManagerService.java:143: cannot find symbol
symbol  : variable xxxxxxxxxx
location: class com.android.internal.R.drawable

解决办法很简单,在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="xxxxxxxxxx" />
把这个copy到publlic.xml。再重新编译一次就搞定了。

public.xml也提到
<!-- Private symbols that we need to reference from framework code.  See
       frameworks/base/core/res/MakeJavaSymbols.sed for how to easily generate
       this.
  -->

看起来所有private的internal res都必须在这里声明一下。JellyBean以前貌似没有这么麻烦。好在他提供了一个sed,免得全部手写。





posted on 2012-09-20 14:40 wythern 阅读(2250) 评论(2)  编辑 收藏 引用

评论

# re: 给Android JellyBean添加internal resource[未登录] 2012-12-21 13:03

为什么我运行这个命令,不会自动生成啊?请指教啊  回复  更多评论   

# re: 给Android JellyBean添加internal resource[未登录] 2012-12-21 17:01 wythern

@陈
那应该是没有报前面的错误,你可以查看一下那个sed脚本是怎么分析compiler的输出的。
  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理