2013-04-17 37 views
0

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文件导致消失的问题,它似乎并没有被引起按字母顺序附近可绘打破,但它是非常很难确定它的解决一切和“为什么'问题依然存在。

+0

将xml布局添加到项目中没有限制。但它会减慢你的应用程序。越来越多的android xml意味着更多的UI被夸大和渲染。 –

回答

1

一些更多的信息是需要能够做出更多的猜测。一旦我遇到类似于GB版本发生但不在上面的问题,只有在Mac上进行编译;如果在Windows上编译,同样工作正常;这个问题是背景图片没有显示出来的按钮。我的背景图像是一个9-补丁,最后我注意到它是由于没有将所有可绘制的 - [m | h | x] dpi中的相应图像放在一起;我只有在drawable-xhdpi目录下才修复这个问题。您可以检查这些类型的问题。例如,这个问题只出现在某些屏幕密度或某些android版本等等。正如其他答案所说,40 xml远没有任何限制。

HTH, 阿里。

+0

它在根目录'drawable'文件夹中绘制 - 它不是一个图像,而是一个3项目,只有颜色和形状。我不认为(?)如果我将其添加到其他位置,它会产生变化,并且在我倾向于寻找其他位置之前它不是问题。 我用更多的信息更新了主要问题 - 介意看看?有没有你想要的信息?我不确定什么是有用的,我不能只是抛弃整个项目。 – Groxx

+0

当您导航到显示问题的页面时,尝试监视日志,并查看是否存在有关丢失ID或可以提供更多线索的任何错误。 –

+0

看起来没有任何关联。很多:'VFY:无法解析虚拟方法4109',然后是'VFY:替换0x000b处的操作码0x6f'和'VFY:死代码0x000e-000f',但是这些都在ActionBarSherlock库中(似乎是版本化代码被修剪)。除此之外,没有任何东西看起来像是一个错误。 – Groxx