diff --git a/Editor/BuildTool/AppBuildParam.cs b/Editor/BuildTool/AppBuildParam.cs index 99525ae..3e37217 100644 --- a/Editor/BuildTool/AppBuildParam.cs +++ b/Editor/BuildTool/AppBuildParam.cs @@ -32,10 +32,6 @@ namespace Guru.Editor public string AndroidKeystorePass = ""; // Android KeyStore 文件名 public string AndroidAlias = ""; // Android KeyStore 文件名 public string AndroidAliasPass = ""; // Android KeyStore 文件名 - public string CustomGradlePath = ""; // 自定义 Gradle 路径 - public string CustomJDKRoot = ""; // 自定义 JDK 路径 - public string CustomNDKRoot = ""; // 自定义 NDK 路径 - public string CustomAndroidSDKRoot = ""; // 自定义 AndroidSDK 路径 //------------ iOS ---------------- public string IOSTargetVersion = ""; // IOS SDK 版本设置 ( iOS 发布专用 ) public string IOSTeamId = ""; // IOS 打包 TeamId ( iOS 使用专用的开发证书后开启 ) diff --git a/Editor/BuildTool/AppBuilder.cs b/Editor/BuildTool/AppBuilder.cs index 32aab9d..786b35b 100644 --- a/Editor/BuildTool/AppBuilder.cs +++ b/Editor/BuildTool/AppBuilder.cs @@ -1,13 +1,16 @@ + + namespace Guru.Editor { using System.Linq; using System; + using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; using System.IO; using NUnit.Framework; - + /// /// 构建工具 /// @@ -21,14 +24,8 @@ namespace Guru.Editor private const string GuruAliasName = "guru"; private const string GuruAliasPass = "guru0622"; - private const string DEFAULT_GRADLE_PATH_MAC_2021_3_41 = + private const string UnityGradlePath_2021_3_41 = "/Applications/Unity/Hub/Editor/2021.3.41f1/PlaybackEngines/AndroidPlayer/Tools/gradle"; - private const string DEFAULT_JDK_PATH_MAC_2021_3_41 = - "/Applications/Unity/Hub/Editor/2021.3.41f1/PlaybackEngines/AndroidPlayer/OpenJDK"; - private const string DEFAULT_NDK_PATH_MAC_2021_3_41 = - "/Applications/Unity/Hub/Editor/2021.3.41f1/PlaybackEngines/AndroidPlayer/NDK"; - private const string DEFAULT_ANDROID_SDK_MAC_2021_3_41 = - "/Applications/Unity/Hub/Editor/2021.3.41f1/PlaybackEngines/AndroidPlayer/SDK"; private static string GuruKeystorePath => Application.dataPath + $"/Plugins/Android/{GuruKeystoreName}"; private static string ProguardName => "proguard-user.txt"; @@ -79,11 +76,8 @@ namespace Guru.Editor SwitchBuildPlatform(BuildTarget.Android); // 打包通用设置 ChangeBuildPlayerCommonSetting(buildParam, BuildTargetGroup.Android); - // 设置打包环境 - SetGradlePath(buildParam.CustomGradlePath); - SetJDKRoot(buildParam.CustomJDKRoot); - SetNDKRoot(buildParam.CustomNDKRoot); - SetAndroidSDKRoot(buildParam.CustomAndroidSDKRoot); + // Set GradlePath + SetGradlePath(); var isDebug = !buildParam.IsBuildRelease; var useMinify = buildParam.AndroidUseMinify; @@ -127,17 +121,18 @@ namespace Guru.Editor PlayerSettings.Android.keyaliasPass = buildParam.AndroidAliasPass; } - PlayerSettings.Android.targetArchitectures = AndroidArchitecture.ARMv7 | AndroidArchitecture.ARM64; // 构建 armV7, arm64 + PlayerSettings.Android.targetArchitectures = AndroidArchitecture.ARMv7 | AndroidArchitecture.ARM64; // 构建 armv7, arm64 PlayerSettings.Android.minSdkVersion = AndroidSdkVersions.AndroidApiLevel22; PlayerSettings.Android.targetSdkVersion = (AndroidSdkVersions)androidTargetVersion; // 设置 API Version //打包 string symbolDefine = buildParam.IsBuildRelease ? GameDefine.MACRO_RELEASE : GameDefine.MACRO_DEBUG; + string apkPath = string.Empty; string version = Application.version; string extension = buildParam.IsBuildAAB ? ".aab" : ".apk"; if (EditorUserBuildSettings.exportAsGoogleAndroidProject) extension = ""; // 输出工程 string outputDir = Path.GetFullPath($"{Application.dataPath }/../{OutputDirName}/Android"); - var apkPath = $"{outputDir}/{Application.productName.Replace(" ","_")}_{symbolDefine}_{version}_{buildNumber}{extension}"; + apkPath = $"{outputDir}/{Application.productName.Replace(" ","_")}_{symbolDefine}_{version}_{buildNumber}{extension}"; if (!Directory.Exists(outputDir)) Directory.CreateDirectory(outputDir); BuildOptions opts = isDebug ? BuildOptions.Development : BuildOptions.None; @@ -153,88 +148,13 @@ namespace Guru.Editor } return apkPath; } - - /// - /// 设置 GradlePath - /// - /// - private static void SetGradlePath(string gradlePath = "") + + private static void SetGradlePath() { - if (!string.IsNullOrEmpty(gradlePath)) +#if UNITY_ANDROID && UNITY_2021_3_41 + if (Directory.Exists(UnityGradlePath_2021_3_41)) { - UnityEditor.Android.AndroidExternalToolsSettings.gradlePath = gradlePath; - return; - } - -#if UNITY_2021_3_41 && UNITY_EDITOR_OSX - // 针对 2021.3.41 MAC 版本,直接强制走Unity 自带的 Gradle 库 - if (Directory.Exists(DEFAULT_GRADLE_PATH_MAC_2021_3_41)) - { - UnityEditor.Android.AndroidExternalToolsSettings.gradlePath = DEFAULT_GRADLE_PATH_MAC_2021_3_41; - } -#endif - } - - /// - /// 设置自定义的JDK 路径 - /// - /// - private static void SetJDKRoot(string jdkRoot) - { - if (!string.IsNullOrEmpty(jdkRoot)) - { - UnityEditor.Android.AndroidExternalToolsSettings.jdkRootPath = jdkRoot; - return; - } - -#if UNITY_2021_3_41 && UNITY_EDITOR_OSX - // 针对 2021.3.41 MAC 版本,直接强制走Unity 自带的 JDK 库 - if (Directory.Exists(DEFAULT_JDK_PATH_MAC_2021_3_41)) - { - UnityEditor.Android.AndroidExternalToolsSettings.jdkRootPath = DEFAULT_JDK_PATH_MAC_2021_3_41; - } -#endif - } - - /// - /// 设置自定义的 NDK 路径 - /// - /// - private static void SetNDKRoot(string ndkRoot) - { - if (!string.IsNullOrEmpty(ndkRoot)) - { - UnityEditor.Android.AndroidExternalToolsSettings.ndkRootPath = ndkRoot; - return; - } - -#if UNITY_2021_3_41 && UNITY_EDITOR_OSX - // 针对 2021.3.41 MAC 版本,直接强制走Unity 自带的 JDK 库 - if (Directory.Exists(DEFAULT_JDK_PATH_MAC_2021_3_41)) - { - UnityEditor.Android.AndroidExternalToolsSettings.ndkRootPath = DEFAULT_NDK_PATH_MAC_2021_3_41; - } -#endif - } - - - /// - /// 设置自定义的 NDK 路径 - /// - /// - private static void SetAndroidSDKRoot(string sdkRoot) - { - if (!string.IsNullOrEmpty(sdkRoot)) - { - UnityEditor.Android.AndroidExternalToolsSettings.sdkRootPath = sdkRoot; - return; - } - -#if UNITY_2021_3_41 && UNITY_EDITOR_OSX - // 针对 2021.3.41 MAC 版本,直接强制走Unity 自带的 JDK 库 - if (Directory.Exists(DEFAULT_JDK_PATH_MAC_2021_3_41)) - { - UnityEditor.Android.AndroidExternalToolsSettings.sdkRootPath = DEFAULT_ANDROID_SDK_MAC_2021_3_41; + UnityEditor.Android.AndroidExternalToolsSettings.gradlePath = UnityGradlePath_2021_3_41; } #endif } @@ -332,7 +252,7 @@ namespace Guru.Editor try { BuildOptions opts = isDebug ? BuildOptions.Development : BuildOptions.None; - BuildPipeline.BuildPlayer(GetBuildScenes(), outputDir, BuildTarget.iOS, opts); + BuildPipeline.BuildPlayer(GetBuildScenes(), outputDir, BuildTarget.iOS, BuildOptions.None); if (buildParam.BuilderType == AppBuilderType.Editor) { Open(outputDir); @@ -359,9 +279,10 @@ namespace Guru.Editor var guids = AssetDatabase.FindAssets($"{nameof(AppBuilder)} t:Script"); if (guids.Length > 0) { + var path = ""; foreach (var guid in guids) { - var path = AssetDatabase.GUIDToAssetPath(guid); + path = AssetDatabase.GUIDToAssetPath(guids[0]); if (path.Contains($"Editor/BuildTool/{nameof(AppBuilder)}")) { return Directory.GetParent(path)!.FullName; @@ -437,6 +358,7 @@ namespace Guru.Editor /// 修改打包版本号 /// /// + /// private static string ChangeBuildNumber(BuildTarget buildTarget) { var nowDate = DateTime.Now; @@ -481,7 +403,7 @@ namespace Guru.Editor /// 获取打包场景 /// /// - private static string[] GetBuildScenes() + public static string[] GetBuildScenes() { List names = new List(); foreach (var e in EditorBuildSettings.scenes) @@ -498,7 +420,7 @@ namespace Guru.Editor /// 打开路径 /// /// - private static void Open(string path) + public static void Open(string path) { #if UNITY_EDITOR_OSX EditorUtility.RevealInFinder(path);