Android Gradle объединил Values.xml использует неправильное пространство имен

В процессе преобразования проекта в систему сборки 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/">

В чем причина этой ошибки и как ее можно исправить?

Ответ 1

Я потратил около 2 часов на то, чтобы прорваться через Git commit, который разбил нашу конструкцию Gradle. Эта команда содержала более 200 измененных файлов с 4000 + модифицированными строками. Вы можете себе представить, насколько это было весело:)

В любом случае, вот что вызвало эту неясную ошибку Gradle для нас: некоторые стили с атрибутом xmlns:custom были определены в res/values/styles.xml:

<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'

Ответ 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>

i, очевидно, удалил ссылку ns, поскольку она не должна быть такой. Мне пришлось искать всю кодовую базу для слова "xmlns:" и искать тот, который был не в том месте. Взял время.

Ответ 5

У меня была такая же проблема, когда я обновил версию для Android от студии 1.5 до версии 2.2. Быстрое решение этого - это когда вы открываете существующий проект в обновленной версии, просто "игнорируете" плагин/версию обновления gradle.

Ответ 6

В моем случае я нашел следующий код в 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"

Я удалил код выше и решил свою проблему