Skip to content

Commit 03fff8c

Browse files
authored
[Xamarin.Android.Build.Tasks] Remove MAM targets from CoreResolve (#7868)
Context: f6f11a5 We're working with the InTune team to make use of our member remapping support (f6f11a5), and they hit a bit of a snag: > I'm having some issues integrating it into the Xamarin build. > We need our process to run after `_CompileJava` so we can analyze > the inheritance of the app's classes. Now, we also need our process > to run before `_CollectAndroidRemapMembers` so that the XML > generated in that process can be consumed properly. Unfortunately, > this generates a circular dependency: > > error MSB4006: There is a circular dependency in the target dependency graph > involving target "_CollectAndroidRemapMembers". > Since "_ResolveLibraryProjectImports" has "DependsOn" dependence on > "_CollectAndroidRemapMembers", the circular is > "_CollectAndroidRemapMembers<-_ResolveLibraryProjectImports<-_ExtractLibraryProjectImports<-_GetLibraryImports<-_CompileJava<-…<-_CollectAndroidRemapMembers". Commit f6f11a5 updated `$(CoreResolveReferencesDependsOn)` to add the `_ConvertAndroidMamMappingFileToXml` and `_CollectAndroidRemapMembers` targets, but @jonpryor does not remember *why* these targets needed to be added to `$(CoreResolveReferencesDependsOn)` in the first place. Update `$(CoreResolveReferencesDependsOn)` to remove the `_ConvertAndroidMamMappingFileToXml` and `_CollectAndroidRemapMembers` targets, and move those targets to the new `$(_GenerateAndroidRemapNativeCodeDependsOn)` MSBuild property, which is the `DependsOnTargets` list for the target `_GenerateAndroidRemapNativeCode`. This delays execution of the `_ConvertAndroidMamMappingFileToXml` and `_CollectAndroidRemapMembers` targets as late as possible, which should resolve the circular deps.
1 parent fa9b99f commit 03fff8c

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.BuildOrder.targets

-2
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,6 @@ projects, these properties are set in Xamarin.Android.Legacy.targets.
110110
_CreatePropertiesCache;
111111
_SeparateAppExtensionReferences;
112112
$(ResolveReferencesDependsOn);
113-
_ConvertAndroidMamMappingFileToXml;
114-
_CollectAndroidRemapMembers;
115113
_AddAndroidCustomMetaData;
116114
_ResolveAars;
117115
</CoreResolveReferencesDependsOn>

src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets

+9-1
Original file line numberDiff line numberDiff line change
@@ -1706,8 +1706,16 @@ because xbuild doesn't support framework reference assemblies.
17061706
/>
17071707
</Target>
17081708

1709+
<PropertyGroup>
1710+
<_GenerateAndroidRemapNativeCodeDependsOn>
1711+
_ConvertAndroidMamMappingFileToXml;
1712+
_CollectAndroidRemapMembers;
1713+
_PrepareAndroidRemapNativeAssemblySources
1714+
</_GenerateAndroidRemapNativeCodeDependsOn>
1715+
</PropertyGroup>
1716+
17091717
<Target Name="_GenerateAndroidRemapNativeCode"
1710-
DependsOnTargets="_PrepareAndroidRemapNativeAssemblySources"
1718+
DependsOnTargets="$(_GenerateAndroidRemapNativeCodeDependsOn)"
17111719
Condition=" '@(_AndroidRemapMembers->Count())' != '0' "
17121720
Inputs="$(_XARemapMembersFilePath)"
17131721
Outputs="@(_AndroidRemapAssemblySource)">

0 commit comments

Comments
 (0)