迁移到Android Studio 3.1.1 - 获取" AAPT:错误:: item>。"

时间:2018-04-19 10:19:24

标签: android android-gradle android-studio-3.1 aapt2

我正在尝试将Android Studio 3.0项目迁移到Android Studio 3.1.1,后者启用Android gradle插件3.1.1和新的AAPT2资源处理器。我认为我的问题源于其中任何一个。

基本上,当我尝试重新同步我的项目时,我得到的错误是

  

用户/用户/ SRC /应用程序/应用程序-1 / SRC /主/ RES /值/ styles.xml:599:5-608:13:   AAPT:错误:: item>。

我不知道单独根据此错误消息可能出现的错误。谷歌搜索它似乎也找不到任何东西。此错误消息指向的行没有什么特别的,只是一个样式声明:

<style name=“AppEditText" parent="BigEditText">
   <item name="android:gravity">left</item>  
   <item name="android:textCursorDrawable">@drawable/drawable</item>
   <item name="android:background">@android:color/transparent</item>
   …
</style>

基于错误位置并且知道AAPT2现在处于打开状态(之前已关闭),我得出的结论是错误与资源有关,但我不知道错误是什么。

我的项目包含两个应用程序和一个公共模块,这两个应用程序都依赖于它们。 commons模块也实现了一些UI组件。不确定这是否相关。

我如何进一步调试?

更新:当我查看由AAPT2处理的合并values.xml时,我可以看到生成的values.xml包含一些奇怪的内容。

<ns3:item name="layout_columnWeight">1</ns3:item>
<ns3:item name="layout_rowWeight">1</ns3:item>

看起来错误来自这些行。但他们怎么会在那里结束?谁会添加 ns3 命名空间?为什么?

1 个答案:

答案 0 :(得分:1)

好的 - 我终于找到了原因。

作为对其他遇到此类问题的人的暗示,您应该转到控制台并使用gradle标志进行--info构建,它会告诉您错误在哪个文件中在处理资源时发生。这就是我设法实际查看错误的位置,因为问题出在开发人员通常从未见过的合并资源文件中。

问题在于,在某些XML资源文件中,指定的命名空间为support和/或为元素指定了命名空间自动res行,现在导致AAPT2出现问题。我不知道它之前为什么有用,但现在这引起了AAPT2的问题。删除这些命名空间声明可以解决此问题。