【问题标题】:Android Gradle merged Values.xml uses wrong namespaceAndroid Gradle 合并 Values.xml 使用错误的命名空间
【发布时间】:2013-10-22 19:45:51
【问题描述】:

在将项目转换为 Android 构建系统的过程中,每当我尝试编译时都会收到此错误。

Gradle: Error parsing XML: prefix must not be bound to one of the reserved namespace names

合并后的 values.xml 文件包含以下根元素:

<resources xmlns:ns1="http://www.w3.org/2000/xmlns/">

此错误的原因是什么?如何解决?

【问题讨论】:

  • 你找到答案了吗?
  • 我也有同样的问题
  • 你发现了吗?在您发布的那条之后是否还有更多错误消息?
  • 我今晚刚碰到这个。同样的问题。这很奇怪,因为命名空间在任何文件中都不存在。 gradle 似乎正在将它们添加到一些......接受的答案真的为你解决了吗?
  • 我遇到了同样的问题,没有使用任何命名空间,但仍然卡在这个错误中。

标签: android android-gradle-plugin


【解决方案1】:

我只花了大约 2 个小时来挖掘破坏了我们的 Gradle 构建的 Git 提交。此提交包含超过 200 个更改的文件,其中包含 4000 多条修改的行。你可以想象它是多么有趣;)

无论如何,这就是导致我们这个模糊的 Gradle 错误的原因:res/values/styles.xml 中定义了一些具有xmlns:custom 属性的样式:

<style name="content" xmlns:custom="http://schemas.android.com/apk/res-auto">
    <item name="android:textSize">14sp</item>
    <item name="android:textColor">@color/content</item>
</style>

正如您所见,custom 命名空间甚至没有被使用。出于某种原因,Ant 和 ADT 构建不关心这个属性,但 Gradle :processDebugResources 任务却显示了一条不太有用的错误消息。

删除xmlns:custom="http://schemas.android.com/apk/res-auto" 修复它。

使用的版本:Gradle 1.10 和'com.android.tools.build:gradle:0.8.0'

【讨论】:

  • 我也试过了,但使用cordova build android 意味着 values.xml 会在构建时使用相同的自定义 ns 被覆盖 :(
  • 我在将基于 Eclipse 的项目 (ANT) 移植到 Android Studio (Gradle) 时遇到了同样的问题。问题是由于 Crashlytics 具有相同的 &lt;style name="ns0" xmlns:ns0="http://schemas.android.com/apk/res-auto"&gt; 格式。通过删除文件解决了问题(移植完成后,我将添加 crashlytics)。
【解决方案2】:

有同样的问题。我的是由于 Crashlytics。他们自动生成的 xml 文件有无效的命名空间。

【讨论】:

    【解决方案3】:

    先阅读我所有的答案:似乎这个错误是由于另一个编译问题......

    最初,为了处理这个错误,我像这样更新了我的代码:

    <resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
     ...
    </resources>
    

    进入这段代码:

    <resources ignore="MissingTranslation">
         ...
    </resources>
    

    它在一开始对我有用...但是由于 tu gradle 配置,我遇到了另一个编译错误...现在这些编译错误已得到纠正,我之前的更新不再有效。我必须添加命名空间来生成 APK 文件。

    所以,在处理这个错误之前,一定要先纠正所有的编译错误...

    【讨论】:

      【解决方案4】:

      我的接近所有这些。有人在字符串标签内声明了一个名称空间。像这样的:

      <string name="google_play" xmlns:tools="http://schemas.android.com/tools" >Google Play</string>
      

      我显然删除了 ns 引用,因为它不应该那样存在。我不得不在整个代码库中搜索“xmlns:”这个词,并寻找一个在错误位置的。花了一段时间。

      【讨论】:

        【解决方案5】:

        我在与 Firebase 同步时遇到了这个问题。这是由于应用程序级别 gradle 中的分析包依赖性。已通过评论/删除解决

        实施 'com.google.firebase:firebase-analytics'

        【讨论】:

          【解决方案6】:

          当我将 Android Studio 1.5 更新到 2.2 版本时,我遇到了同样的问题。一个快速的解决方案是当你在更新版本中打开现有项目时,只需“忽略”更新 gradle 插件/版本。

          【讨论】:

            【解决方案7】:

            在我的例子中,我在 styles.xml 中找到了以下代码

             <item name="android:listSelector">
                            <selector xmlns:android="http://schemas.android.com/apk/res/android">
                                <item android:drawable="@color/pressed_color" android:state_pressed="true" />
                                <item android:drawable="@color/focused_color" android:state_focused="true" />
                                <item android:drawable="@color/item_list_color" />
                            </selector>
                        </item>
            

            在选择器中存在错误

            xmlns:android="http://schemas.android.com/apk/res/android"
            

            我删除了上面的代码并解决了我的问题

            【讨论】:

              猜你喜欢
              • 2022-10-16
              • 2018-12-13
              • 1970-01-01
              • 1970-01-01
              • 2012-04-05
              • 1970-01-01
              • 2013-06-17
              • 1970-01-01
              相关资源
              最近更新 更多