@@ -1419,47 +1419,23 @@ because xbuild doesn't support framework reference assemblies.
14191419 <Error Text =" %24(AndroidGenerateJniMarshalMethods)=True is not supported at this time." />
14201420</Target >
14211421
1422- <Target Name =" _LinkAssembliesNoShrinkInputs" >
1422+ <!--
1423+ Inner build only: runs assembly modifications (FixAbstractMethods, AddKeepAlives, etc.)
1424+ BEFORE crossgen2 creates R2R images. ResolvedAssemblies is empty in the inner build
1425+ because the Android-specific _ResolveAssemblies target only runs in the outer build,
1426+ so we gather assemblies from ResolvedFileToPublish instead.
1427+
1428+ Mark every DLL as HasMonoAndroidReference so FixAbstractMethodsStep inspects them;
1429+ the step's own MightNeedFix() guard (IsSubclassOf("Java.Lang.Object")) filters out
1430+ non-binding types.
1431+ -->
1432+ <Target Name =" _LinkAssembliesNoShrink"
1433+ BeforeTargets =" CreateReadyToRunImages"
1434+ Condition =" '$(PublishTrimmed)' != 'true' and '$(_ComputeFilesToPublishForRuntimeIdentifiers)' == 'true' " >
14231435 <ItemGroup >
1424- <!-- We need this in its own item group so it isn't lost during a partial build -->
1425- <_AllResolvedAssemblies Include =" @(ResolvedAssemblies)" />
1426- </ItemGroup >
1427-
1428- <!--
1429- Inner build (Publish pipeline): ResolvedAssemblies is empty because the Android-specific
1430- _ResolveAssemblies target only runs in the outer build. Use ResolvedFileToPublish instead
1431- so LinkAssembliesNoShrink can fix abstract methods etc. BEFORE crossgen2 creates R2R images.
1432- Mark every DLL as HasMonoAndroidReference so FixAbstractMethodsStep inspects them; the step's
1433- own MightNeedFix() guard (IsSubclassOf("Java.Lang.Object")) filters out non-binding types.
1434- -->
1435- <ItemGroup Condition =" '$(_ComputeFilesToPublishForRuntimeIdentifiers)' == 'true' " >
14361436 <_ResolvedFileToPublishDlls Include =" @(ResolvedFileToPublish)" Condition =" '%(Extension)' == '.dll' " >
14371437 <HasMonoAndroidReference >True</HasMonoAndroidReference >
14381438 </_ResolvedFileToPublishDlls >
1439- <_AllResolvedAssemblies Include =" @(_ResolvedFileToPublishDlls)" />
1440- </ItemGroup >
1441- </Target >
1442-
1443- <Target Name =" _LinkAssembliesNoShrink"
1444- DependsOnTargets =" _LinkAssembliesNoShrinkInputs"
1445- BeforeTargets =" CreateReadyToRunImages"
1446- Condition =" '$(PublishTrimmed)' != 'true'"
1447- Inputs =" @(ResolvedAssemblies);@(_ResolvedFileToPublishDlls);$(_AndroidBuildPropertiesCache)"
1448- Outputs =" @(ResolvedAssemblies->'$(MonoAndroidIntermediateAssemblyDir)%(DestinationSubPath)')" >
1449-
1450- <!--
1451- Inner build: SourceFiles = DestinationFiles = @(_ResolvedFileToPublishDlls) for in-place modification.
1452- Outer build: SourceFiles = @(ResolvedAssemblies), DestinationFiles = intermediate dir copy.
1453- -->
1454- <ItemGroup Condition =" '$(_ComputeFilesToPublishForRuntimeIdentifiers)' == 'true' " >
1455- <_LinkNoShrinkSource Include =" @(_ResolvedFileToPublishDlls)" />
1456- <_LinkNoShrinkDestination Include =" @(_ResolvedFileToPublishDlls)" />
1457- <_LinkNoShrinkUserAssemblies Include =" @(_ResolvedFileToPublishDlls)" />
1458- </ItemGroup >
1459- <ItemGroup Condition =" '$(_ComputeFilesToPublishForRuntimeIdentifiers)' != 'true' " >
1460- <_LinkNoShrinkSource Include =" @(ResolvedAssemblies)" />
1461- <_LinkNoShrinkDestination Include =" @(ResolvedAssemblies->'$(MonoAndroidIntermediateAssemblyDir)%(DestinationSubPath)')" />
1462- <_LinkNoShrinkUserAssemblies Include =" @(ResolvedUserAssemblies)" />
14631439 </ItemGroup >
14641440
14651441 <LinkAssembliesNoShrink
@@ -1469,28 +1445,26 @@ because xbuild doesn't support framework reference assemblies.
14691445 EnableMarshalMethods =" $(_AndroidUseMarshalMethods)"
14701446 ErrorOnCustomJavaObject =" $(AndroidErrorOnCustomJavaObject)"
14711447 PackageNamingPolicy =" $(AndroidPackageNamingPolicy)"
1472- ResolvedAssemblies =" @(_AllResolvedAssemblies )"
1473- ResolvedUserAssemblies =" @(_LinkNoShrinkUserAssemblies )"
1474- SourceFiles =" @(_LinkNoShrinkSource )"
1475- DestinationFiles =" @(_LinkNoShrinkDestination )"
1448+ ResolvedAssemblies =" @(_ResolvedFileToPublishDlls )"
1449+ ResolvedUserAssemblies =" @(_ResolvedFileToPublishDlls )"
1450+ SourceFiles =" @(_ResolvedFileToPublishDlls )"
1451+ DestinationFiles =" @(_ResolvedFileToPublishDlls )"
14761452 TargetName =" $(TargetName)"
14771453 AddKeepAlives =" $(AndroidAddKeepAlives)"
14781454 UseDesignerAssembly =" $(AndroidUseDesignerAssembly)"
14791455 Deterministic =" $(Deterministic)"
14801456 ReadSymbols =" $(_AndroidLinkAssembliesReadSymbols)" >
14811457 </LinkAssembliesNoShrink >
1482-
1483- <ItemGroup Condition =" '$(_ComputeFilesToPublishForRuntimeIdentifiers)' != 'true' " >
1484- <FileWrites Include =" $(MonoAndroidIntermediateAssemblyDir)**" />
1485- </ItemGroup >
14861458</Target >
14871459
14881460<!-- Runs additional steps after ILLink runs (_LinkAssemblies) -->
14891461<Target Name =" _AfterILLinkAdditionalSteps"
1490- DependsOnTargets =" _LinkAssembliesNoShrinkInputs"
14911462 Condition =" '$(PublishTrimmed)' == 'true'"
14921463 Inputs =" $(_AndroidLinkFlag)"
14931464 Outputs =" $(_AdditionalPostLinkerStepsFlag)" >
1465+ <ItemGroup >
1466+ <_AllResolvedAssemblies Include =" @(ResolvedAssemblies)" />
1467+ </ItemGroup >
14941468 <AssemblyModifierPipeline
14951469 ApplicationJavaClass =" $(AndroidApplicationJavaClass)"
14961470 CodeGenerationTarget =" $(_AndroidJcwCodegenTarget)"
@@ -2912,7 +2886,7 @@ because xbuild doesn't support framework reference assemblies.
29122886 </Target >
29132887
29142888 <Target Name =" _LinkAssemblies"
2915- DependsOnTargets =" _ResolveAssemblies;_CreatePackageWorkspace;$(_BeforeLinkAssemblies);_GenerateJniMarshalMethods;_LinkAssembliesNoShrink "
2889+ DependsOnTargets =" _ResolveAssemblies;_CreatePackageWorkspace;$(_BeforeLinkAssemblies);_GenerateJniMarshalMethods"
29162890 />
29172891
29182892<!-- TypeMap imports must be last so their target overrides (e.g. _RemoveRegisterAttribute) take precedence -->
0 commit comments