Skip to content

error due to namespace prefix in AndroidManifest.xml #202

@User087

Description

@User087

Describe the bug

On trying to decompile and recompile this, I get this error:

ERROR:
java.lang.IllegalArgumentException: java.io.IOException: at app\AndroidManifest.xml [line
= 8]
Unknown attribute name 'n0:versionCode'
        at com.reandroid.apk.xmlencoder.XMLEncodeSource.getBytes(XMLEncodeSource.java:53)
        at com.reandroid.archive.ByteInputSource.openStream(ByteInputSource.java:38)
        at com.reandroid.apk.ApkModule.getAndroidManifest(ApkModule.java:870)
        at com.reandroid.apkeditor.smali.SmaliCompiler.buildDexFiles(SmaliCompiler.java:53
)
        at com.reandroid.apk.ApkModuleEncoder.encodeDexFiles(ApkModuleEncoder.java:152)
        at com.reandroid.apk.ApkModuleEncoder.scanDirectory(ApkModuleEncoder.java:45)
        at com.reandroid.apkeditor.compile.Builder.buildXml(Builder.java:106)
        at com.reandroid.apkeditor.compile.Builder.runCommand(Builder.java:46)
        at com.reandroid.apkeditor.Options.runCommand(Options.java:59)
        at com.reandroid.apkeditor.Main.run(Main.java:136)
        at com.reandroid.apkeditor.Main.execute(Main.java:72)
        at com.reandroid.apkeditor.Main.main(Main.java:57)
Caused by: java.io.IOException: at app\AndroidManifest.xml [line = 8]
Unknown attribute name 'n0:versionCode'
        at com.reandroid.arsc.chunk.xml.ResXmlAttributeArray.parse(ResXmlAttributeArray.ja
va:311)
        at com.reandroid.arsc.chunk.xml.ResXmlElement.parse(ResXmlElement.java:524)
        at com.reandroid.arsc.chunk.xml.ResXmlDocumentOrElement.parseInnerNodes(ResXmlDocu
mentOrElement.java:275)
        at com.reandroid.arsc.chunk.xml.ResXmlDocument.parse(ResXmlDocument.java:276)
        at com.reandroid.apk.xmlencoder.XMLEncodeSource.encode(XMLEncodeSource.java:83)
        at com.reandroid.apk.xmlencoder.XMLEncodeSource.getArray(XMLEncodeSource.java:65)
        at com.reandroid.apk.xmlencoder.XMLEncodeSource.getBytes(XMLEncodeSource.java:51)
        ... 11 more
Caused by: java.io.IOException: Unknown attribute name 'n0:versionCode'
        at com.reandroid.arsc.chunk.xml.ResXmlAttribute.encodeAttributeName(ResXmlAttribut
e.java:707)
        at com.reandroid.arsc.chunk.xml.ResXmlAttribute.encode(ResXmlAttribute.java:710)
        at com.reandroid.arsc.chunk.xml.ResXmlAttributeArray.parse(ResXmlAttributeArray.ja
va:309)
        ... 17 more

If I instead decompile and recompile with -t json, I get:

ERROR:
java.lang.IllegalArgumentException: java.io.IOException: AndroidManifest.xml: Provided uri
=http://schemas.android.com/apk/res/android, but missing: prefix
        at com.reandroid.apk.ApkModule.getAndroidManifest(ApkModule.java:881)
        at com.reandroid.apkeditor.smali.SmaliCompiler.buildDexFiles(SmaliCompiler.java:53
)
        at com.reandroid.apk.ApkModuleEncoder.encodeDexFiles(ApkModuleEncoder.java:152)
        at com.reandroid.apk.ApkModuleEncoder.scanDirectory(ApkModuleEncoder.java:45)
        at com.reandroid.apkeditor.compile.Builder.buildJson(Builder.java:75)
        at com.reandroid.apkeditor.compile.Builder.runCommand(Builder.java:48)
        at com.reandroid.apkeditor.Options.runCommand(Options.java:59)
        at com.reandroid.apkeditor.Main.run(Main.java:136)
        at com.reandroid.apkeditor.Main.execute(Main.java:72)
        at com.reandroid.apkeditor.Main.main(Main.java:57)
Caused by: java.io.IOException: AndroidManifest.xml: Provided uri=http://schemas.android.c
om/apk/res/android, but missing: prefix
        at com.reandroid.apk.JsonXmlInputSource.getResXmlBlock(JsonXmlInputSource.java:55)

        at com.reandroid.apk.JsonXmlInputSource.openStream(JsonXmlInputSource.java:39)
        at com.reandroid.apk.ApkModule.getAndroidManifest(ApkModule.java:870)
        ... 9 more
Caused by: com.reandroid.json.JSONException: Provided uri=http://schemas.android.com/apk/r
es/android, but missing: prefix
        at com.reandroid.arsc.chunk.xml.ResXmlAttribute.setNamespaceFromJson(ResXmlAttribu
te.java:782)
        at com.reandroid.arsc.chunk.xml.ResXmlAttribute.fromJson(ResXmlAttribute.java:809)

        at com.reandroid.arsc.chunk.xml.ResXmlAttributeArray.fromJson(ResXmlAttributeArray
.java:266)
        at com.reandroid.arsc.chunk.xml.ResXmlElement.fromJson(ResXmlElement.java:489)
        at com.reandroid.arsc.chunk.xml.ResXmlNodeTree.nodesFromJson(ResXmlNodeTree.java:2
60)
        at com.reandroid.arsc.chunk.xml.ResXmlDocument.fromJson(ResXmlDocument.java:164)
        at com.reandroid.apk.JsonXmlInputSource.getResXmlBlock(JsonXmlInputSource.java:53)

        ... 11 more

The AndroidManifest.xml looks like this:

<?xml version='1.0' encoding='utf-8' ?>
<manifest n0:versionCode="733700004"
          n0:versionName="137.0.7337.0"
          n0:compileSdkVersion="33"
          n0:compileSdkVersionCodename="13"
          package="com.kiwibrowser.browser"
          platformBuildVersionCode="33"
          platformBuildVersionName="13" xmlns:n0="http://schemas.android.com/apk/res/android">
  <uses-sdk n0:minSdkVersion="24"
            n0:targetSdkVersion="34" />

To Reproduce

  1. Download this
  2. Run java -jar APKEditor-1.4.4.jar d -i com.kiwibrowser.browser-arm64-14310011181-github.apk -o app
  3. Run java -jar APKEditor-1.4.4.jar b -i app
  4. Observe error in console

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions