Skip to content

Commit 4127516

Browse files
[Android] InvariantGlobalization support for CoreCLR Android builds (#117542)
* Propagate InvariantGlobalization * Create InvariantGlobalization property * Pass the InvariantGlobalization to apkBuilder * Pass the InvariantGlobalization to envVariables * Pass InvariantGlobalization to AndroidAppBuilderTask * Remove Invariant.Tests.csproj exclusion
1 parent 5d86589 commit 4127516

File tree

5 files changed

+13
-1
lines changed

5 files changed

+13
-1
lines changed

src/libraries/tests.proj

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,6 @@
226226

227227
<ItemGroup Condition="'$(TargetOS)' == 'android' and '$(RuntimeFlavor)' == 'CoreCLR' and '$(RunDisablediOSTests)' != 'true'">
228228
<!-- https://github.com/dotnet/runtime/issues/114951 -->
229-
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Runtime\tests\System.Globalization.Tests\Invariant\Invariant.Tests.csproj" />
230229
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Net.Http\tests\FunctionalTests\System.Net.Http.Functional.Tests.csproj" />
231230
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Diagnostics.DiagnosticSource\tests\TestWithConfigSwitches\System.Diagnostics.DiagnosticSource.Switches.Tests.csproj" />
232231
<ProjectExclusions Include="$(MSBuildThisFileDirectory)System.Reflection.MetadataLoadContext\tests\System.Reflection.MetadataLoadContext.Tests.csproj" />

src/mono/msbuild/android/build/AndroidBuild.targets

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,7 @@
251251
ForceAOT="$(RunAOTCompilation)"
252252
ForceFullAOT="$(ForceFullAOT)"
253253
ForceInterpreter="$(MonoForceInterpreter)"
254+
InvariantGlobalization="$(InvariantGlobalization)"
254255
IsLibraryMode="$(_IsLibraryMode)"
255256
MainLibraryFileName="$(MainLibraryFileName)"
256257
RuntimeHeaders="@(RuntimeHeaders)"

src/tasks/AndroidAppBuilder/AndroidAppBuilder.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,11 @@ public class AndroidAppBuilderTask : Task
108108

109109
public bool ForceInterpreter { get; set; }
110110

111+
/// <summary>
112+
/// Indicates whether we want to use invariant globalization mode.
113+
/// </summary>
114+
public bool InvariantGlobalization { get; set; }
115+
111116
[Output]
112117
public string ApkBundlePath { get; set; } = ""!;
113118

@@ -141,6 +146,7 @@ public override bool Execute()
141146
apkBuilder.NativeDependencies = NativeDependencies;
142147
apkBuilder.ExtraLinkerArguments = ExtraLinkerArguments;
143148
apkBuilder.RuntimeFlavor = RuntimeFlavor;
149+
apkBuilder.InvariantGlobalization = InvariantGlobalization;
144150
(ApkBundlePath, ApkPackageId) = apkBuilder.BuildApk(RuntimeIdentifier, MainLibraryFileName, RuntimeHeaders);
145151

146152
return true;

src/tasks/AndroidAppBuilder/ApkBuilder.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -424,6 +424,11 @@ public ApkBuilder(TaskLoggingHelper logger)
424424
envVariables += $"\t\tsetEnv(\"{name}\", \"{value}\");\n";
425425
}
426426

427+
if (InvariantGlobalization)
428+
{
429+
envVariables += $"\t\tsetEnv(\"DOTNET_SYSTEM_GLOBALIZATION_INVARIANT\", \"true\");\n";
430+
}
431+
427432
string jniLibraryName = (IsLibraryMode) ? ProjectName! :
428433
(StaticLinkedRuntime && IsCoreCLR) ? "monodroid" : "System.Security.Cryptography.Native.Android";
429434
string monoRunner = Utils.GetEmbeddedResource("MonoRunner.java")

src/tests/build.proj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,7 @@
264264
AppDir="$(BuildDir)"
265265
DiagnosticPorts="$(DiagnosticPorts)"
266266
ForceInterpreter="$(MonoInterp)"
267+
InvariantGlobalization="$(InvariantGlobalization)"
267268
RuntimeHeaders="$(MicrosoftNetCoreAppRuntimePackDir)/native/include/mono-2.0"
268269
OutputDir="$(AppDir)"
269270
ProjectName="$(Category)"

0 commit comments

Comments
 (0)