From 7fce2ddfb51e94c19542d2996c986f9fc280a3ec Mon Sep 17 00:00:00 2001 From: Marek Habersack Date: Mon, 29 Mar 2021 16:33:35 +0200 Subject: [PATCH] Disable assembly preload by default Disable the current default behavior of Xamarin.Android runtime to preload all the assemblies shipped in the apk on application startup. This behavior has been the default in order to support older versions of `Xamarin.Forms`, sacrificing startup performance. --- .../Tests/Xamarin.Android.Build.Tests/BuildTest.cs | 6 +++++- .../Xamarin.Android.Common.targets | 3 ++- 2 files changed, 7 insertions(+), 2 deletions(-) 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 c0627aa7823..c08b20db66d 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 @@ -3932,7 +3932,11 @@ public void PackageNamingPolicy ([Values ("LowercaseMD5", "LowercaseCrc64")] str Assert.IsTrue (b.Build (proj), "build should have succeeded."); var environment = b.Output.GetIntermediaryPath (Path.Combine ("__environment__.txt")); FileAssert.Exists (environment); - Assert.AreEqual ($"__XA_PACKAGE_NAMING_POLICY__={packageNamingPolicy}", File.ReadAllText (environment).Trim ()); + if (Builder.UseDotNet) { + Assert.AreEqual ($"__XA_PACKAGE_NAMING_POLICY__={packageNamingPolicy}{Environment.NewLine}mono.enable_assembly_preload=0", File.ReadAllText (environment).Trim ()); + } else { + Assert.AreEqual ($"__XA_PACKAGE_NAMING_POLICY__={packageNamingPolicy}", File.ReadAllText (environment).Trim ()); + } } } diff --git a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets index f64b08aa6eb..a9fcc31f1ce 100644 --- a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets +++ b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets @@ -290,7 +290,8 @@ Copyright (C) 2011-2012 Xamarin. All rights reserved. False - <_AndroidEnablePreloadAssembliesDefault>True + <_AndroidEnablePreloadAssembliesDefault Condition=" '$(UsingAndroidNETSdk)' == 'true' ">False + <_AndroidEnablePreloadAssembliesDefault Condition=" '$(UsingAndroidNETSdk)' != 'true' ">True $(_AndroidEnablePreloadAssembliesDefault) <_NativeAssemblySourceDir>$(IntermediateOutputPath)android\ <_AndroidUseNewTypemaps>True