1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-04 12:00:25 +00:00

[.NET] Require net9.0 for Android exports

To ensure Android exports are compatible with the new Play Store
requirement that all `.so` libraries included are aligned to 16k,
we now require C# projects to target `net9.0` which uses the
correct alignment (as opposed to the current one of 4k).

The thirdparty jar library has also been updated to the one from
the 9.0.4 runtime package so it's compatible with non-gradle
builds targeting `net9.0`.

Non-android projects are not affect, the minimum TFM is still
`net8.0`.
This commit is contained in:
Raul Santos
2025-09-04 21:42:35 +02:00
parent 6c9aa4c7d3
commit f0c9253bec
4 changed files with 9 additions and 3 deletions

View File

@@ -26,6 +26,10 @@ namespace GodotTools.ProjectEditor
var mainGroup = root.AddPropertyGroup();
mainGroup.AddProperty("TargetFramework", GodotMinimumRequiredTfm);
// Non-gradle builds require .NET 9 to match the jar libraries included in the export template.
var net9 = mainGroup.AddProperty("TargetFramework", "net9.0");
net9.Condition = " '$(GodotTargetPlatform)' == 'android' ";
mainGroup.AddProperty("EnableDynamicLoading", "true");
string sanitizedName = IdentifierUtils.SanitizeQualifiedIdentifier(name, allowEmptyIdentifiers: true);

View File

@@ -0,0 +1 @@
https://www.nuget.org/packages/Microsoft.NETCore.App.Runtime.Mono.android-arm64/9.0.4

View File

@@ -2739,6 +2739,7 @@ bool _validate_dotnet_tfm(const String &required_tfm, String &r_error) {
List<String> args;
args.push_back("build");
args.push_back(project_path);
args.push_back("/p:GodotTargetPlatform=android");
args.push_back("--getProperty:TargetFramework");
int exitcode;
@@ -2778,9 +2779,9 @@ bool EditorExportPlatformAndroid::has_valid_export_configuration(const Ref<Edito
err += TTR("Exporting to Android when using C#/.NET is experimental.") + "\n";
if (!gradle_build_enabled) {
// For template exports we only support .NET 8 because the template
// includes .jar dependencies that may only be compatible with .NET 8.
if (!_validate_dotnet_tfm("net8.0", err)) {
// For template exports we only support .NET 9 because the template
// includes .jar dependencies that may only be compatible with .NET 9.
if (!_validate_dotnet_tfm("net9.0", err)) {
r_error = err;
return false;
}