Browse Source

开发:MenuItem 打包 Android 功能

XuJJ 1 week ago
parent
commit
279ea0031b

+ 47 - 0
snipershooting/ShootSniper/Assets/Editor/MenuItemTools.cs

@@ -2,6 +2,7 @@ using System;
 using System.Collections.Generic;
 using System.IO;
 using UnityEditor;
+using UnityEditor.AddressableAssets.Settings;
 using UnityEngine;
 
 public class MenuItemTools
@@ -915,4 +916,50 @@ public class MenuItemTools
         AssetDatabase.Refresh();
         Debug.Log("Assets renamed according to dictionary.");
     }
+
+    [MenuItem("Tools/Build/Android/Apk")]
+    private static void BuildAndroidApk()
+    {
+        EditorUserBuildSettings.buildAppBundle = false;
+        var outputPath = $"{Application.productName}-v{Application.version}.apk";
+        BuildAndroid(outputPath);
+    }
+
+    [MenuItem("Tools/Build/Android/AAB")]
+    private static void BuildAndroidAab()
+    {
+        EditorUserBuildSettings.buildAppBundle = true;
+        var outputPath = $"{Application.productName}-v{Application.version}.aab";
+        BuildAndroid(outputPath);
+    }
+
+    private static void BuildAndroid(string outputPath)
+    {
+        KeystorePasswordSetter.AutoSetupKeystore();
+        AddressableAssetSettings.BuildPlayerContent();
+        BuildPlayer(outputPath);
+    }
+
+    private static void BuildPlayer(string outputPath)
+    {
+        var buildOptions = new BuildPlayerOptions {
+            scenes = sceneNames,
+            locationPathName = outputPath,
+            target = BuildTarget.Android,
+            options = BuildOptions.None
+        };
+        BuildPipeline.BuildPlayer(buildOptions);
+        AssetDatabase.Refresh();
+    }
+    
+    private static string[] sceneNames {
+        get {
+            var scenes = EditorBuildSettings.scenes;
+            var names = new List<string>();
+            foreach (var scene in scenes) {
+                if (scene.enabled) names.Add(scene.path);
+            }
+            return names.ToArray();
+        }
+    }
 }

+ 1 - 1
snipershooting/ShootSniper/Assets/Editor/ProjectBuild/AndroidBuild/KeystorePasswordSetter.cs

@@ -20,7 +20,7 @@ public class KeystorePasswordSetter
     }
 
     [MenuItem("Tools/自动设置 Keystore")]
-    private static void AutoSetupKeystore()
+    public static void AutoSetupKeystore()
     {
         var keystorePasswordDict = ReadKeystorePassword();