diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/GeneratePackageManagerJava.cs b/src/Xamarin.Android.Build.Tasks/Tasks/GeneratePackageManagerJava.cs index ee869ddad32..623b20976de 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/GeneratePackageManagerJava.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/GeneratePackageManagerJava.cs @@ -413,7 +413,7 @@ void AddEnvironment () Log ); } else { - marshalMethodsAsmGen = new MarshalMethodsNativeAssemblyGenerator (uniqueAssemblyNames); + marshalMethodsAsmGen = new MarshalMethodsNativeAssemblyGenerator (assemblyCount, uniqueAssemblyNames); } marshalMethodsAsmGen.Init (); diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Android/KnownProperties.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Android/KnownProperties.cs index d8b7b63fa51..7b846201c9a 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Android/KnownProperties.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Android/KnownProperties.cs @@ -12,6 +12,7 @@ public static class KnownProperties public const string AndroidUseLatestPlatformSdk = "AndroidUseLatestPlatformSdk"; public const string AndroidUseAapt2 = "AndroidUseAapt2"; public const string AndroidCreatePackagePerAbi = "AndroidCreatePackagePerAbi"; + public const string AndroidEnableMarshalMethods = "AndroidEnableMarshalMethods"; public const string AndroidSupportedAbis = "AndroidSupportedAbis"; public const string RuntimeIdentifier = "RuntimeIdentifier"; diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Android/XamarinAndroidApplicationProject.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Android/XamarinAndroidApplicationProject.cs index fde6e298fa1..1feaf5e2d8e 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Android/XamarinAndroidApplicationProject.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Android/XamarinAndroidApplicationProject.cs @@ -166,6 +166,11 @@ public AndroidLinkMode AndroidLinkModeRelease { set { SetProperty (ReleaseProperties, KnownProperties.AndroidLinkMode, value.ToString ()); } } + public bool EnableMarshalMethods { + get { return string.Equals (GetProperty (KnownProperties.AndroidEnableMarshalMethods), "True", StringComparison.OrdinalIgnoreCase); } + set { SetProperty (KnownProperties.AndroidEnableMarshalMethods, value.ToString ()); } + } + public string AndroidManifest { get; set; } public string LayoutMain { get; set; } public string MainActivity { get; set; } diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/MarshalMethodsNativeAssemblyGenerator.cs b/src/Xamarin.Android.Build.Tasks/Utilities/MarshalMethodsNativeAssemblyGenerator.cs index 50aec79c9ed..229ba0397d7 100644 --- a/src/Xamarin.Android.Build.Tasks/Utilities/MarshalMethodsNativeAssemblyGenerator.cs +++ b/src/Xamarin.Android.Build.Tasks/Utilities/MarshalMethodsNativeAssemblyGenerator.cs @@ -204,8 +204,9 @@ sealed class MarshalMethodName /// /// Constructor to be used ONLY when marshal methods are DISABLED /// - public MarshalMethodsNativeAssemblyGenerator (ICollection uniqueAssemblyNames) + public MarshalMethodsNativeAssemblyGenerator (int numberOfAssembliesInApk, ICollection uniqueAssemblyNames) { + this.numberOfAssembliesInApk = numberOfAssembliesInApk; this.uniqueAssemblyNames = uniqueAssemblyNames ?? throw new ArgumentNullException (nameof (uniqueAssemblyNames)); generateEmptyCode = true; } diff --git a/tests/MSBuildDeviceIntegration/Tests/InstallAndRunTests.cs b/tests/MSBuildDeviceIntegration/Tests/InstallAndRunTests.cs index d1a3cd61d2a..fb0ec53e1ec 100644 --- a/tests/MSBuildDeviceIntegration/Tests/InstallAndRunTests.cs +++ b/tests/MSBuildDeviceIntegration/Tests/InstallAndRunTests.cs @@ -26,7 +26,7 @@ public void Teardown () } [Test] - public void NativeAssemblyCacheWithSatelliteAssemblies () + public void NativeAssemblyCacheWithSatelliteAssemblies ([Values (true, false)] bool enableMarshalMethods) { var path = Path.Combine ("temp", TestName); var lib = new XamarinAndroidLibraryProject { @@ -49,6 +49,7 @@ public void NativeAssemblyCacheWithSatelliteAssemblies () proj = new XamarinAndroidApplicationProject { IsRelease = true, + EnableMarshalMethods = enableMarshalMethods, }; proj.References.Add (new BuildItem.ProjectReference ($"..\\{lib.ProjectName}\\{lib.ProjectName}.csproj", lib.ProjectName, lib.ProjectGuid)); proj.SetAndroidSupportedAbis ("armeabi-v7a", "arm64-v8a", "x86", "x86_64");