最近工作中,在移植输入法去新的分支的时候,发现输入法在弹出过程会强死,这是因为调用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定义的资源进入com.android.internal.R.java(私有资源),并不是严格定义。在一个xml文件里也可以通过不同的标签来控制资源是公共的还是私有的。记得在使用的时候,R.还是internal.R.需要分清楚,看你加的资源在哪个包里
————————————————
版权声明:本文为CSDN博主「Kiwi-pp」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u011938614/article/details/53747711
联系客服