Android项目是否存在一些XML /布局/资源限制/编译工具链中的某些点?将一个(未使用的,任何内容)XML布局文件添加到我的Android项目中会导致应用程序中其他位置出现渲染错误。删除它可以修复它。这是编译工具链某些部分的错误,我该如何诊断/修复它?添加两个XML文件导致渲染错误/某事。笏?
一些额外的背景:
我有一个比较大的Android项目。今天,我在添加一个功能时遇到了一个问题:在我旋转应用程序之前,无法渲染背景的按钮。其他背景/风格/风格的按钮仍然有效,但是这个背景在应用程序中随处可见。旋转修复了它所在的屏幕以及按钮的后续实例,直到重新启动应用程序的进程。
经过试验和错误,并平分和实验的很多,我有一个最小的再现是完全可靠的一些级别:增加了两个XML布局文件,以我目前的项目引发的bug。具体而言,在唯一的/ res/layout文件夹中添加第40个XML文件。删除它可以使按钮正确渲染,添加它会破坏它。
这些文件可以完全不用,完全从头开始,任何内容和任何名称。没有其他项目更改。我正在运行最新版本的Eclipse和Android SDK - 如果需要,我可以获得特定的版本号。它已经在同类设置的同事机器上复制了这个项目。我已经清理,重建,手动删除构建产品,重新启动计算机,错误仍然存在。
必须有更具体的东西造成它,我很乐意提供帮助缩小范围的建议。不幸的是,它超出了我对Android构建系统的了解,而且它似乎并不是我直接造成的。谁能帮忙?或者指点我一些更多的资源?
更多细节:
- (无法相信我忘了这一点)这似乎只在2.3.6设备我有发生。它可能会在其他2.x版本上发生,但是4.2.2会始终正确呈现按钮(尽管我没有/不能排除其他位置的错误)。我今天会尝试模拟器。
- 发生在多个Android设备上,尽管它们基本都是股票(没有自定义主题等)。
- 当前的应用程序设置是一个核心应用程序项目,其他三个项目使用该核心项目通过清单合并生成不同的构建(开发,生产等)。
- 这个特殊的可绘制资源应该有一个唯一的R id,所以它不会在那里发生碰撞。我没有把它与系统的R值进行比较 - 有没有一种好的方法来做到这一点?
- 目标SDK = 17,最小= 8
也很有趣:重命名从 “rounded_teal_button_normal” 提拉文件 “rounded_teal_button_nrml” 并不能改变什么,但将其更改为 “rounded_teal_button_aargh” 确实是。只有重要的区别我可以看到,“nrml”不改变文件的字母顺序,而“aargh”(有“_disabled”文件和“_pressed”)。但是,这会导致现在处于“正常”位置的绘图停止绘图。
更改项目的按钮状态,选择的顺序或状态得到其绘制(甚至删除所有其他样式)没有任何影响。
添加第三 XML文件导致消失的问题,它似乎并没有被引起按字母顺序附近可绘打破,但它是非常很难确定它的解决一切和“为什么'问题依然存在。
将xml布局添加到项目中没有限制。但它会减慢你的应用程序。越来越多的android xml意味着更多的UI被夸大和渲染。 –