fix(res): add missing namespace declarations #2102
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Steps to reproduce:
com.android.tools.build:gradle:4.2.2
to version 7.4.0 (newer version generates a more detailed error message, otherwise you would not be able to find the cause)The namespace "ads" was declared in a parent node below the root node, but declared namespaces are written only for the root node, so BinaryXMLParser.generateNameForNS() won't write a namespace declaration too. With this fix the grade build will pass all resource steps. The result is even better than apktool: In case of new namespaces apktool redeclares all namespaces.
PS: the check
writer.getIndent() == 0
might not be necessary anymore