Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 250
Benjamin Cassidy Avatar asked Oct 22 '13 19:10

Benjamin Cassidy


5 Answers

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'

like image 108
friederbluemle Avatar answered Oct 28 '22 15:10

friederbluemle


Had the same issue. Mine was due to Crashlytics. Their automatically generated xml file has invalid name spaces.

like image 23
DevfoMobile Avatar answered Oct 28 '22 16:10

DevfoMobile


Read all my answer first : it seems that this error is due to another compilation problem...

Initially, to deal with this error, I updated my code like this:

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

into this code:

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

And it works for me at the beginning...but I had another compilation error due tu gradle configuration...and now that these compilation errors are corrected, my previous update does not work anymore. I had to add the namespace to generate the APK file.

So , be sure to correct all the compilation errors first before to deal with this error...

like image 29
AntoineP Avatar answered Oct 28 '22 16:10

AntoineP


mine was close to all of this. Someone had declared a name space inside of a strings tag. Something like this:

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

i obviously removed the ns reference as it should not be there like that. I had to search the entire codebase for the word "xmlns:" and look for one that was in the wrong place. Took a while.

like image 45
j2emanue Avatar answered Oct 28 '22 14:10

j2emanue


I faced this issue while syncing with Firebase. It was due to analytics package dependency in the app level gradle. It was solved by commenting/ removing

implementation 'com.google.firebase:firebase-analytics'

like image 30
Prathamesh Avatar answered Oct 28 '22 16:10

Prathamesh