Bläddra i källkod

Merge pull request #82762 from raulsntos/dotnet/android-ux

C#: Add checks to Android export
Rémi Verschelde 1 år sedan
förälder
incheckning
7233001c67

+ 5 - 1
modules/mono/editor/GodotTools/GodotTools.ProjectEditor/ProjectGenerator.cs

@@ -23,11 +23,15 @@ namespace GodotTools.ProjectEditor
 
             var mainGroup = root.AddPropertyGroup();
             mainGroup.AddProperty("TargetFramework", "net6.0");
-            mainGroup.AddProperty("EnableDynamicLoading", "true");
+
+            var net7 = mainGroup.AddProperty("TargetFramework", "net7.0");
+            net7.Condition = " '$(GodotTargetPlatform)' == 'android' ";
 
             var net8 = mainGroup.AddProperty("TargetFramework", "net8.0");
             net8.Condition = " '$(GodotTargetPlatform)' == 'ios' ";
 
+            mainGroup.AddProperty("EnableDynamicLoading", "true");
+
             string sanitizedName = IdentifierUtils.SanitizeQualifiedIdentifier(name, allowEmptyIdentifiers: true);
 
             // If the name is not a valid namespace, manually set RootNamespace to a sanitized one.

+ 1 - 1
modules/mono/editor/GodotTools/GodotTools/Export/ExportPlugin.cs

@@ -187,7 +187,7 @@ namespace GodotTools.Export
 
             List<string> outputPaths = new();
 
-            bool embedBuildResults = (bool)GetOption("dotnet/embed_build_outputs") || features.Contains("android");
+            bool embedBuildResults = (bool)GetOption("dotnet/embed_build_outputs") || platform == OS.Platforms.Android;
 
             foreach (PublishConfig config in targets)
             {

+ 13 - 0
platform/android/export/export_plugin.cpp

@@ -2238,6 +2238,19 @@ bool EditorExportPlatformAndroid::has_valid_export_configuration(const Ref<Edito
 #ifdef MODULE_MONO_ENABLED
 	// Android export is still a work in progress, keep a message as a warning.
 	err += TTR("Exporting to Android when using C#/.NET is experimental.") + "\n";
+
+	bool unsupported_arch = false;
+	Vector<ABI> enabled_abis = get_enabled_abis(p_preset);
+	for (ABI abi : enabled_abis) {
+		if (abi.arch != "arm64" && abi.arch != "x86_64") {
+			err += vformat(TTR("Android architecture %s not supported in C# projects."), abi.arch) + "\n";
+			unsupported_arch = true;
+		}
+	}
+	if (unsupported_arch) {
+		r_error = err;
+		return false;
+	}
 #endif
 
 	// Look for export templates (first official, and if defined custom templates).