【问题标题】:Migrating to Android Studio 3.1.1 - getting "AAPT: error: :item>."迁移到 Android Studio 3.1.1 - 获取“AAPT:错误::item>”。
【发布时间】:2018-04-19 10:19:24
【问题描述】:

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

基本上,当我尝试 gradle sync 我的项目时,我得到的错误是

用户/用户/src/app/app-1/src/main/res/values/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 组件。不确定这是否相关。

我将如何进一步调试?

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

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

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

【问题讨论】:

  • 删除“android:textCursorDrawable”项后你试过了吗,整行。可能是文件的“可绘制”名称或其他错误。
  • 谢谢,但我认为这不是原因,因为它会抱怨在这种情况下找不到可绘制对象。我可以跟随drawable到文件,所以我可以看到它就在那里。
  • &lt;style name=“AppEditText" parent="BigEditText"&gt;,看看好像不对。
  • 我在原始帖子中添加了更多细节,这可能是根本原因。不过,仍然没有解释这个问题。

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


【解决方案1】:

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

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

问题在于,在我们的一些 XML 资源文件中,指定的命名空间是 support 和/或为元素指定了命名空间 auto-res 行,现在导致 AAPT2 出现问题。我不知道为什么它以前有效,但这现在导致 AAPT2 出现问题。删除这些命名空间声明解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-04
    • 2022-07-02
    相关资源
    最近更新 更多