diff --git a/src/libraries/tests.proj b/src/libraries/tests.proj index 5641c763c36977..ffeb39af997abd 100644 --- a/src/libraries/tests.proj +++ b/src/libraries/tests.proj @@ -231,7 +231,6 @@ - diff --git a/src/mono/msbuild/android/build/AndroidBuild.targets b/src/mono/msbuild/android/build/AndroidBuild.targets index 56dd94a5983986..886e99635a34c6 100644 --- a/src/mono/msbuild/android/build/AndroidBuild.targets +++ b/src/mono/msbuild/android/build/AndroidBuild.targets @@ -251,6 +251,7 @@ ForceAOT="$(RunAOTCompilation)" ForceFullAOT="$(ForceFullAOT)" ForceInterpreter="$(MonoForceInterpreter)" + InvariantGlobalization="$(InvariantGlobalization)" IsLibraryMode="$(_IsLibraryMode)" MainLibraryFileName="$(MainLibraryFileName)" RuntimeHeaders="@(RuntimeHeaders)" diff --git a/src/tasks/AndroidAppBuilder/AndroidAppBuilder.cs b/src/tasks/AndroidAppBuilder/AndroidAppBuilder.cs index 006b746ef0d010..bf3d76bcb24626 100644 --- a/src/tasks/AndroidAppBuilder/AndroidAppBuilder.cs +++ b/src/tasks/AndroidAppBuilder/AndroidAppBuilder.cs @@ -108,6 +108,11 @@ public class AndroidAppBuilderTask : Task public bool ForceInterpreter { get; set; } + /// + /// Indicates whether we want to use invariant globalization mode. + /// + public bool InvariantGlobalization { get; set; } + [Output] public string ApkBundlePath { get; set; } = ""!; @@ -141,6 +146,7 @@ public override bool Execute() apkBuilder.NativeDependencies = NativeDependencies; apkBuilder.ExtraLinkerArguments = ExtraLinkerArguments; apkBuilder.RuntimeFlavor = RuntimeFlavor; + apkBuilder.InvariantGlobalization = InvariantGlobalization; (ApkBundlePath, ApkPackageId) = apkBuilder.BuildApk(RuntimeIdentifier, MainLibraryFileName, RuntimeHeaders); return true; diff --git a/src/tasks/AndroidAppBuilder/ApkBuilder.cs b/src/tasks/AndroidAppBuilder/ApkBuilder.cs index 21fd800c89681a..df0772393e73a8 100644 --- a/src/tasks/AndroidAppBuilder/ApkBuilder.cs +++ b/src/tasks/AndroidAppBuilder/ApkBuilder.cs @@ -424,6 +424,11 @@ public ApkBuilder(TaskLoggingHelper logger) envVariables += $"\t\tsetEnv(\"{name}\", \"{value}\");\n"; } + if (InvariantGlobalization) + { + envVariables += $"\t\tsetEnv(\"DOTNET_SYSTEM_GLOBALIZATION_INVARIANT\", \"true\");\n"; + } + string jniLibraryName = (IsLibraryMode) ? ProjectName! : (StaticLinkedRuntime && IsCoreCLR) ? "monodroid" : "System.Security.Cryptography.Native.Android"; string monoRunner = Utils.GetEmbeddedResource("MonoRunner.java") diff --git a/src/tests/build.proj b/src/tests/build.proj index 8499575b01c257..b1fd5ba3b72efb 100644 --- a/src/tests/build.proj +++ b/src/tests/build.proj @@ -264,6 +264,7 @@ AppDir="$(BuildDir)" DiagnosticPorts="$(DiagnosticPorts)" ForceInterpreter="$(MonoInterp)" + InvariantGlobalization="$(InvariantGlobalization)" RuntimeHeaders="$(MicrosoftNetCoreAppRuntimePackDir)/native/include/mono-2.0" OutputDir="$(AppDir)" ProjectName="$(Category)"