U8SDK——资源合并导致属性丢失的BUG

作者: 分类: U8SDK 发布时间: 2015-03-17 15:09 61条评论

有童鞋在使用u8sdk的时候,打包工具执行到重新生成R文件时,抛错说,找不到***属性(通常是strings.xml,dimens.xml,colors.xml中的属性)。

查了下合并前的sdk目录资源中,的确含有这些属性。但是,合并之后的文件里,确实有些属性丢失了。。。

想了想,问题肯定是出在资源合并的时候。之前,在apk_utils.py的mergeResXml方法是这样写的:

这里在合并strings.xml等文件时,为了保证不造成重复条目,这里合并的时候,加了重复判定。但是,就是这个重复判定,导致了部分属性的丢失。

举个例子,按照上面这个代码,如果SDK的strings.xml中含有以下属性:

而游戏母包中的strings.xml含有如下属性:

那么按照上面的代码,SDK的strings.xml中的login属性就会丢失。因为上面匹配是直接匹配login,这样login_11,login_12都是匹配的。打包脚本以为该条属性重复了,所以就过滤了login.

所以,这里我们加一个补丁:我们不直接匹配name的值,而是和两边的双引号一起进行匹配。这样,丢失属性的概率就很小了。修改后的代码如下:

另外一处BUG:就是在合并sdk_manifest.xml的时候,如果applicationConfigs节点里面没东西,就不会解析applicationConfigs节点的proxyApplication。

这个需要将apk_utils.py中mergeManifest方法里面的这一行判断条件
“#ff0000;”>** if appConfigNode != None and len(appConfigNode) > 0:**
** 给修改成**
“#ff0000;”>** if appConfigNode != None:**
** 即可**

本文出自 U8SDK技术博客,转载时请注明出处及相应链接。

本文永久链接: http://www.uustory.com/?p=1504

评论功能已经关闭,请加入U8SDK技术群进行讨论和咨询:207609068
Ɣ回顶部
U8SDK技术群 x
技术同学请加入
点击加入