From 255e7936f0872eb76899183de4b4ce8f4f0f6774 Mon Sep 17 00:00:00 2001 From: zhangzheng Date: Mon, 16 Mar 2026 17:31:09 +0800 Subject: [PATCH] 111 --- .../Editor/Build/BuildApkWindow.cs | 104 +++++++++++++++++- Assets/00.StaryEvoTools/package.json | 2 +- 2 files changed, 100 insertions(+), 6 deletions(-) diff --git a/Assets/00.StaryEvoTools/Editor/Build/BuildApkWindow.cs b/Assets/00.StaryEvoTools/Editor/Build/BuildApkWindow.cs index 84609d8..6295d57 100644 --- a/Assets/00.StaryEvoTools/Editor/Build/BuildApkWindow.cs +++ b/Assets/00.StaryEvoTools/Editor/Build/BuildApkWindow.cs @@ -1,3 +1,4 @@ +using System.Collections.Generic; using Sirenix.OdinInspector; using Sirenix.OdinInspector.Editor; using UnityEditor; @@ -10,7 +11,7 @@ namespace Stary.Evo.Editor { public static OdinEditorWindow window; - [MenuItem("Evo/Dev/Apk打包工具",false, 4)] + [MenuItem("Evo/Dev/Apk打包工具", false, 4)] static void ShowWindows() { window = (BuildApkWindow)EditorWindow.GetWindow(typeof(BuildApkWindow)); @@ -28,6 +29,11 @@ namespace Stary.Evo.Editor [EnumToggleButtons, HideLabel] public DeviceType deviceType; + + [HideLabel] [Title("包裹列表", titleAlignment: TitleAlignments.Centered)] [ValueDropdown("GetBuildPackageNames")] + public string selectedPackageNames; + + [BoxGroup("Build(清空打包缓存)", centerLabel: true, order: 1)] [Button("清空打包缓存")] void OnClearCache() @@ -84,9 +90,26 @@ namespace Stary.Evo.Editor return; } - // 设置包名和项目名 - PlayerSettings.productName = hotfixMainResDomain.projectInfo.projectName; - PlayerSettings.applicationIdentifier = hotfixMainResDomain.projectInfo.projectPackageName; + string packageName = ""; + // 检测包名格式 + if (!IsValidPackageName(selectedPackageNames)) + { + // 不是有效包名格式,添加前缀 com.xosmo. + packageName = "com.xosmo." + selectedPackageNames; + // 设置包名和项目名 + PlayerSettings.productName = selectedPackageNames; + PlayerSettings.applicationIdentifier = packageName; + } + else + { + // 分割包名字符串 + string[] segments = selectedPackageNames.Split('.'); + // 返回最后一个部分 + packageName = segments[segments.Length - 1]; + PlayerSettings.productName = packageName; + PlayerSettings.applicationIdentifier = selectedPackageNames; + } + string[] scenelist = default; if (isWatermark) @@ -96,7 +119,15 @@ namespace Stary.Evo.Editor hotfixMainResDomain.projectInfo.loadingScenePath, $"Assets/Main/main_{deviceType.ToString()}.unity" }; + PlayerSettings.productName += "_watermark"; PlayerSettings.applicationIdentifier += "_watermark"; + Sprite xosmo = Resources.Load("logo"); + PlayerSettings.virtualRealitySplashScreen = xosmo.texture; + PlayerSettings.SplashScreen.showUnityLogo = false; + PlayerSettings.SplashScreen.logos = new[] + { + PlayerSettings.SplashScreenLogo.Create(3f, xosmo), + }; } else { @@ -104,13 +135,16 @@ namespace Stary.Evo.Editor { $"Assets/Main/main_{deviceType.ToString()}.unity" }; + PlayerSettings.virtualRealitySplashScreen = null; + PlayerSettings.SplashScreen.showUnityLogo = false; + PlayerSettings.SplashScreen.logos = null; } // 配置构建选项 BuildPlayerOptions buildOptions = new BuildPlayerOptions { scenes = scenelist, - locationPathName = $"Builds/Android/{PlayerSettings.applicationIdentifier}.apk", + locationPathName = $"Builds/Android/{PlayerSettings.productName}.apk", target = BuildTarget.Android, options = BuildOptions.None }; @@ -136,5 +170,65 @@ namespace Stary.Evo.Editor Xreal, Rokid } + + + /// + /// 检测当前所有包裹 + /// + /// + private List GetBuildPackageNames() + { + List result = new List(); + foreach (var name in CreatAssetWindow.GetCreatDomainAllName()) + { + result.Add(name); + } + + if (selectedPackageNames.IsNullOrEmpty()) + { + if (result.Count > 0) + { + selectedPackageNames = result[0]; + } + else + { + selectedPackageNames = ""; + } + } + + return result; + } + + /// + /// 检测字符串是否是有效的包名格式 + /// + /// 要检测的字符串 + /// 是否是有效的包名格式 + private bool IsValidPackageName(string packageName) + { + if (string.IsNullOrEmpty(packageName)) + return false; + + // 包名只能包含小写字母、数字和点 + foreach (char c in packageName) + { + if (!char.IsLower(c) && !char.IsDigit(c) && c != '.') + return false; + } + + // 不能以点开头或结尾 + if (packageName.StartsWith(".") || packageName.EndsWith(".")) + return false; + + // 不能包含连续的点 + if (packageName.Contains("..")) + return false; + + // 至少包含一个点 + if (!packageName.Contains(".")) + return false; + + return true; + } } } \ No newline at end of file diff --git a/Assets/00.StaryEvoTools/package.json b/Assets/00.StaryEvoTools/package.json index b90879d..b6cd756 100644 --- a/Assets/00.StaryEvoTools/package.json +++ b/Assets/00.StaryEvoTools/package.json @@ -1,6 +1,6 @@ { "name": "com.staryevo.tools", - "version": "1.3.9", + "version": "1.3.10", "displayName": "00.StaryEvo.Tools", "description": "This is an Framework package(后台服务器版本,端口9527)", "unity": "2021.3",