[Xamarin.Android.Build.Tasks] Xamarin.Android deployment fails unless project is cleaned first #5760
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.
Fixes https://work.azdo.io/1288593
This is a weird bug which I cannot reproduce locally. However reading
the code this code path is possible.
When trying to do incremental builds when using the
AndroidPackageFormataabwe get the following errorThe problem is the base.zip doesn't have ANY AndroidManifest.xml in it...
But why?
Well what seems to happen is in this case the input file
packaged_resourcesand the output
base.zipare unchanged.packaged_resourceshasan
AndroidManifest.xmlfile andbase.ziphas amanifest/AndroidManifest.xmlfile. Because it was renamed from
AndroidManifest.xmltomanifest/AndroidManifest.xmlon a previous build. This is so that our
base.zipconfirms to the expectedfolder structure for an
aab. So this is by design.However, in this case because BOTH files are up to date, we DONT add
the
AndroidManifest.xmlfile frompackaged_resourcesto thebase.zip.A compounding problem is because no physical file
manifest/AndroidManifest.xmlexists, that file is then removed from the
base.zip.As a result the
FixupArchivewhich does the renaming of theAndroidManifest.xmlfor
aabfiles has nothing to do. Because its source file does not exist.So we end up with a
base.zipwithout ANYAndroidManifest.xmlfile in it.The fix in this case is to NEVER remove an
AndroidManifest.xmlfile fromthe base.zip or apk. It is a protected file and should always exist.