Browse Source

C#: Enable exporting for Android

RedworkDE 2 years ago
parent
commit
f759cc00a3

+ 1 - 1
modules/mono/config.py

@@ -1,6 +1,6 @@
 # Prior to .NET Core, we supported these: ["windows", "macos", "linuxbsd", "android", "haiku", "web", "ios"]
 # Eventually support for each them should be added back (except Haiku if not supported by .NET Core)
-supported_platforms = ["windows", "macos", "linuxbsd"]
+supported_platforms = ["windows", "macos", "linuxbsd", "android"]
 
 
 def can_build(env, platform):

+ 10 - 6
modules/mono/editor/GodotTools/GodotTools/Export/ExportPlugin.cs

@@ -127,7 +127,7 @@ namespace GodotTools.Export
             if (!DeterminePlatformFromFeatures(features, out string platform))
                 throw new NotSupportedException("Target platform not supported.");
 
-            if (!new[] { OS.Platforms.Windows, OS.Platforms.LinuxBSD, OS.Platforms.MacOS }
+            if (!new[] { OS.Platforms.Windows, OS.Platforms.LinuxBSD, OS.Platforms.MacOS, OS.Platforms.Android }
                     .Contains(platform))
             {
                 throw new NotImplementedException("Target platform not yet implemented.");
@@ -142,15 +142,19 @@ namespace GodotTools.Export
             {
                 archs.Add("x86_64");
             }
-            else if (features.Contains("x86_32"))
+            if (features.Contains("x86_32"))
             {
                 archs.Add("x86_32");
             }
-            else if (features.Contains("arm64"))
+            if (features.Contains("arm64"))
             {
                 archs.Add("arm64");
             }
-            else if (features.Contains("universal"))
+            if (features.Contains("arm32"))
+            {
+                archs.Add("arm32");
+            }
+            if (features.Contains("universal"))
             {
                 if (platform == OS.Platforms.MacOS)
                 {
@@ -159,7 +163,7 @@ namespace GodotTools.Export
                 }
             }
 
-            bool embedBuildResults = (bool)GetOption("dotnet/embed_build_outputs");
+            bool embedBuildResults = (bool)GetOption("dotnet/embed_build_outputs") || features.Contains("android");
 
             foreach (var arch in archs)
             {
@@ -256,7 +260,7 @@ namespace GodotTools.Export
                 "x86_64" => "x64",
                 "armeabi-v7a" => "arm",
                 "arm64-v8a" => "arm64",
-                "armv7" => "arm",
+                "arm32" => "arm",
                 "arm64" => "arm64",
                 _ => throw new ArgumentOutOfRangeException(nameof(arch), arch, "Unexpected architecture")
             };