diff --git a/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.AssemblyResolution.targets b/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.AssemblyResolution.targets
index 0d0a212b938..ac974bcd327 100644
--- a/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.AssemblyResolution.targets
+++ b/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.AssemblyResolution.targets
@@ -206,20 +206,18 @@ _ResolveAssemblies MSBuild target.
+
+ <_ResolvedAssemblies Include="@(ResolvedAssemblies)" />
+ <_ResolvedUserAssemblies Include="@(ResolvedUserAssemblies)" />
+ <_ResolvedFrameworkAssemblies Include="@(ResolvedFrameworkAssemblies)" />
+ <_ResolvedSymbols Include="@(ResolvedSymbols)" />
+
- <_ResolvedAssemblies Include="@(ResolvedAssemblies->'$(MonoAndroidIntermediateAssemblyDir)%(DestinationSubPath)')" Condition=" '%(DestinationSubPath)' != '' " />
- <_ResolvedUserAssemblies Include="@(ResolvedUserAssemblies->'$(MonoAndroidIntermediateAssemblyDir)%(DestinationSubPath)')" Condition=" '%(DestinationSubPath)' != '' " />
- <_ResolvedFrameworkAssemblies Include="@(ResolvedFrameworkAssemblies->'$(MonoAndroidIntermediateAssemblyDir)%(DestinationSubPath)')" Condition=" '%(DestinationSubPath)' != '' " />
- <_ResolvedSymbols Include="@(ResolvedSymbols->'$(MonoAndroidIntermediateAssemblyDir)%(DestinationSubPath)')" Condition=" '%(DestinationSubPath)' != '' " />
<_ShrunkAssemblies Include="@(_ResolvedAssemblies)" />
<_ShrunkUserAssemblies Include="@(_ResolvedUserAssemblies)" />
<_ShrunkFrameworkAssemblies Include="@(_ResolvedFrameworkAssemblies)" />
- <_ResolvedAssemblies Include="@(ResolvedAssemblies)" />
- <_ResolvedUserAssemblies Include="@(ResolvedUserAssemblies)" />
- <_ResolvedFrameworkAssemblies Include="@(ResolvedFrameworkAssemblies)" />
- <_ResolvedSymbols Include="@(ResolvedSymbols)" />
<_ShrunkFrameworkAssemblies
Include="@(_ShrunkAssemblies)"
Condition=" '%(_ShrunkAssemblies.FrameworkAssembly)' == 'true' "
diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest.cs
index a8a90ae9ff3..3e8c108104e 100644
--- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest.cs
+++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest.cs
@@ -2178,21 +2178,6 @@ public void CheckLintResourceFileReferencesAreFixed ([Values] AndroidRuntime run
// TODO: [TestCase (false, AndroidRuntime.NativeAOT)]
public void SimilarAndroidXAssemblyNames (bool publishTrimmed, AndroidRuntime runtime)
{
- if (!publishTrimmed && runtime == AndroidRuntime.CoreCLR) {
- // This currently fails with the following exception:
- //
- // error XALNS7015: System.NotSupportedException: Writing mixed-mode assemblies is not supported
- // at Mono.Cecil.ModuleWriter.Write(ModuleDefinition module, Disposable`1 stream, WriterParameters parameters)
- // at Mono.Cecil.ModuleWriter.WriteModule(ModuleDefinition module, Disposable`1 stream, WriterParameters parameters)
- // at Mono.Cecil.ModuleDefinition.Write(String fileName, WriterParameters parameters)
- // at Mono.Cecil.AssemblyDefinition.Write(String fileName, WriterParameters parameters)
- // at Xamarin.Android.Tasks.SaveChangedAssemblyStep.ProcessAssembly(AssemblyDefinition assembly, StepContext context) in src/Xamarin.Android.Build.Tasks/Tasks/AssemblyModifierPipeline.cs:line 197
- // at Xamarin.Android.Tasks.AssemblyPipeline.Run(AssemblyDefinition assembly, StepContext context) in src/Xamarin.Android.Build.Tasks/Utilities/AssemblyPipeline.cs:line 26
- // at Xamarin.Android.Tasks.AssemblyModifierPipeline.RunPipeline(AssemblyPipeline pipeline, ITaskItem source, ITaskItem destination) in src/Xamarin.Android.Build.Tasks/Tasks/AssemblyModifierPipeline.cs:line 175
- Assert.Ignore ("CoreCLR: fails because of a Mono.Cecil lack of support");
- return;
- }
-
bool aotAssemblies = runtime == AndroidRuntime.MonoVM && publishTrimmed;
var proj = new XamarinAndroidApplicationProject {
IsRelease = true,
diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Tasks/LinkerTests.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Tasks/LinkerTests.cs
index 1c995304248..a26a8ec2e0f 100644
--- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Tasks/LinkerTests.cs
+++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Tasks/LinkerTests.cs
@@ -469,22 +469,6 @@ public void AndroidAddKeepAlives (bool isRelease, bool setAndroidAddKeepAlivesTr
return;
}
- if (runtime == AndroidRuntime.CoreCLR && isRelease && !setAndroidAddKeepAlivesTrue && setLinkModeNone && shouldAddKeepAlives) {
- // This currently fails with the following exception:
- //
- // error XALNS7015: System.NotSupportedException: Writing mixed-mode assemblies is not supported
- // at Mono.Cecil.ModuleWriter.Write(ModuleDefinition module, Disposable`1 stream, WriterParameters parameters)
- // at Mono.Cecil.ModuleWriter.WriteModule(ModuleDefinition module, Disposable`1 stream, WriterParameters parameters)
- // at Mono.Cecil.ModuleDefinition.Write(String fileName, WriterParameters parameters)
- // at Mono.Cecil.AssemblyDefinition.Write(String fileName, WriterParameters parameters)
- // at Xamarin.Android.Tasks.SaveChangedAssemblyStep.ProcessAssembly(AssemblyDefinition assembly, StepContext context) in src/Xamarin.Android.Build.Tasks/Tasks/AssemblyModifierPipeline.cs:line 197
- // at Xamarin.Android.Tasks.AssemblyPipeline.Run(AssemblyDefinition assembly, StepContext context) in src/Xamarin.Android.Build.Tasks/Utilities/AssemblyPipeline.cs:line 26
- // at Xamarin.Android.Tasks.AssemblyModifierPipeline.RunPipeline(AssemblyPipeline pipeline, ITaskItem source, ITaskItem destination) in src/Xamarin.Android.Build.Tasks/Tasks/AssemblyModifierPipeline.cs:line 175
- // at Xamarin.Android.Tasks.AssemblyModifierPipeline.RunTask() in src/Xamarin.Android.Build.Tasks/Tasks/AssemblyModifierPipeline.cs:line 123
- Assert.Ignore ("CoreCLR: fails because of a Mono.Cecil lack of support");
- return;
- };
-
var proj = new XamarinAndroidApplicationProject {
IsRelease = isRelease,
OtherBuildItems = {
diff --git a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets
index 6d187855e88..c702e5717f7 100644
--- a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets
+++ b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets
@@ -1419,18 +1419,64 @@ because xbuild doesn't support framework reference assemblies.
-
+
+
+
+ <_LinkAssembliesNoShrinkDir>$(IntermediateOutputPath)android\linked-noshrink\
+
+
+
+
+
+
+
+
-
- <_AllResolvedAssemblies Include="@(ResolvedAssemblies)" />
+ <_LinkNoShrinkAllAssemblies Include="@(ResolvedFileToPublish)" Condition=" '%(Extension)' == '.dll' ">
+ $(_LinkAssembliesNoShrinkAbi)
+
+
+
+
+
+ <_LinkNoShrinkAllAssemblies
+ Update="@(_LinkNoShrinkAllAssemblies)"
+ Condition=" '%(Filename)' == '$(TargetName)' "
+ HasMonoAndroidReference="true" />
+
+
+
+
+ <_LinkNoShrinkUserAssemblies Include="@(_LinkNoShrinkAllAssemblies)"
+ Condition=" '%(Filename)' != 'Mono.Android' and '%(Filename)' != 'Mono.Android.Export' and '%(Filename)' != 'Mono.Android.Runtime' and '%(Filename)' != 'Java.Interop' " />
-
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+ <_LinkNoShrinkAllAssemblies Remove="@(_LinkNoShrinkAllAssemblies)" />
+ <_LinkNoShrinkUserAssemblies Remove="@(_LinkNoShrinkUserAssemblies)" />
@@ -1595,23 +1656,27 @@ because xbuild doesn't support framework reference assemblies.
+ Condition=" '$(_ComputeFilesToPublishForRuntimeIdentifiers)' != 'true' ">
+
+ <_SidecarSubDir Condition=" '$(PublishTrimmed)' == 'true' ">linked\
+ <_SidecarSubDir Condition=" '$(PublishTrimmed)' != 'true' ">android\linked-noshrink\
+
- <_SidecarLinkedDir Condition=" $(IntermediateOutputPath.Replace('\','/').TrimEnd('/').EndsWith('$(RuntimeIdentifier)')) ">$(IntermediateOutputPath)linked\
- <_SidecarLinkedDir Condition=" '$(_SidecarLinkedDir)' == '' ">$(IntermediateOutputPath)$(RuntimeIdentifier)\linked\
+ <_SidecarLinkedDir Condition=" $(IntermediateOutputPath.Replace('\','/').TrimEnd('/').EndsWith('$(RuntimeIdentifier)')) ">$(IntermediateOutputPath)$(_SidecarSubDir)
+ <_SidecarLinkedDir Condition=" '$(_SidecarLinkedDir)' == '' ">$(IntermediateOutputPath)$(RuntimeIdentifier)\$(_SidecarSubDir)
- <_SidecarXmlCopySource Include="@(_NonCompositeAssemblies->'$(IntermediateOutputPath)%(RuntimeIdentifier)\linked\%(Filename).jlo.xml')" />
- <_SidecarXmlCopySource Include="@(_NonCompositeAssemblies->'$(IntermediateOutputPath)%(RuntimeIdentifier)\linked\%(Filename).typemap.xml')" />
+ <_SidecarXmlCopySource Include="@(_NonCompositeAssemblies->'$(IntermediateOutputPath)%(RuntimeIdentifier)\$(_SidecarSubDir)%(Filename).jlo.xml')" />
+ <_SidecarXmlCopySource Include="@(_NonCompositeAssemblies->'$(IntermediateOutputPath)%(RuntimeIdentifier)\$(_SidecarSubDir)%(Filename).typemap.xml')" />
<_SidecarXmlCopySource Include="@(_NonCompositeAssemblies->'$(_SidecarLinkedDir)%(Filename).jlo.xml')" />
<_SidecarXmlCopySource Include="@(_NonCompositeAssemblies->'$(_SidecarLinkedDir)%(Filename).typemap.xml')" />
-
@@ -3109,7 +3179,7 @@ because xbuild doesn't support framework reference assemblies.