[Xamarin.Android.Build.Tasks] aapt2, move ConvertResourcesCases to a new target #2367
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: #2356
When
$(AndroidUseAapt2)=True
, if you look for a log entry of a filethat is processed:
You will see this repeated several times (9 in case of a Xamarin.Forms
project).
It turns out, since the
_CompileAndroidLibraryResources
target isbatched, it is called once per item of
@(_LibraryResourceHashDirectories)
:It calls
ConvertResourcesCases
for each call, which is not ideal.ConvertResourcesCases
operates on the whole tree of resources, so itreally should just run once: before
<Aapt2Compile/>
.I think the fix here is:
ConvertResourcesCases
to a new_ConvertLibraryResourcesCases
targetInputs
should be@(_LibraryResourceHashDirectories->'%(FileFound)')
and not batched.Outputs
should be a new stamp file following ournew convention.
AndroidConversionFlagFile
._CompileAndroidLibraryResources
now depends on_ConvertLibraryResourcesCases
, and it should only run on the firstbatched instance of
_CompileAndroidLibraryResources
.