redwoolf redwoolf - 3 months ago 56
Android Question

Android Gradle merged Values.xml uses wrong namespace

In the process of converting a project to the Android build system I get this error whenever I attempt to compile.

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


The merged values.xml file contains the following root element:

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


What is the cause of this error and how can it be fixed?

Answer

I just spent around 2 hours digging through the Git commit that broke our Gradle build. This commit contained over 200 changed files with 4000+ modified lines. You can imagine how much fun it was ;)

Anyway, here is what caused this obscure Gradle error for us: Some styles with a xmlns:custom attribute were defined in 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>

As you can see the custom namespace is not even used. For some reason the Ant and ADT builds did not care about this attribute, but the Gradle :processDebugResources task barfed with a not very helpful error message.

Removing xmlns:custom="http://schemas.android.com/apk/res-auto" fixed it.

Versions used: Gradle 1.10 and 'com.android.tools.build:gradle:0.8.0'

Comments