From 0a3bfa23a80b0d31b08d09d3e48d30cb75964559 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期一, 01 六月 2026 18:37:49 +0800
Subject: [PATCH] 打包修改

---
 Assets/Editor/Tool/ClientPackage.cs |   72 ++++++++++++++++++++++++++++++------
 1 files changed, 60 insertions(+), 12 deletions(-)

diff --git a/Assets/Editor/Tool/ClientPackage.cs b/Assets/Editor/Tool/ClientPackage.cs
index 43daaea..d47cbc4 100644
--- a/Assets/Editor/Tool/ClientPackage.cs
+++ b/Assets/Editor/Tool/ClientPackage.cs
@@ -17,6 +17,7 @@
     public static readonly string versionsFilePath = Application.dataPath + "/Editor/VersionConfigs/Versions.txt";
     public static readonly string[] baseLevels = new string[] { "Assets/Resources/Scenes/Launch.unity" };
     private static readonly string[] LaunchRequiredYooPackages = { "Builtin", "Dll" };
+    private static readonly string[] YooAssetNoCompressExtensions = { ".unity3d", ".bundle", ".bytes", ".hash", ".version", ".json", ".txt" };
 
     public static string auditOutTime = string.Empty;
 
@@ -177,9 +178,7 @@
         // ---- HalfAsset锛堜腑鍖咃級锛氬墧闄ら儴鍒� Package ----
         if (halfPackages.Count > 0)
         {
-            // 鎸夋棫閫昏緫鏄犲皠锛歨ero鈫払attle, audio鈫扐udio, video鈫扸ideo, uieffect鈫扷IEffect
-            var removePackages = new List<string> { "Battle", "Audio", "Video", "UIEffect" };
-            if (!includeUI) removePackages.Add("UI");
+            var removePackages = CreateHalfAssetRemovePackages();
 
             foreach (var pkgName in removePackages)
             {
@@ -328,6 +327,7 @@
         // File.Copy(copySdkFile, File_google_services);
         copySdkFile = StringUtility.Concat(_sdkPath, "/Channel/Android/", versionConfig.sdkFileName, "/gradleTemplate.properties");
         File.Copy(copySdkFile, File_gradleTemplate);
+        EnsureYooAssetNoCompressExtensions(File_gradleTemplate);
         copySdkFile = StringUtility.Concat(_sdkPath, "/Channel/Android/", versionConfig.sdkFileName, "/LauncherManifest.xml");
         File.Copy(copySdkFile, File_LauncherManifest);
         copySdkFile = StringUtility.Concat(_sdkPath, "/Channel/Android/", versionConfig.sdkFileName, "/launcherTemplate.gradle");
@@ -433,8 +433,7 @@
                 Debug.Log("[ClientPackage] NullAsset Export: 宸叉竻绌� StreamingAssets/yoo");
                 break;
             case InstalledAsset.HalfAsset:
-                var removePackages = new List<string> { "Battle", "Audio", "Video", "UIEffect" };
-                if (!includeUI) removePackages.Add("UI");
+                var removePackages = CreateHalfAssetRemovePackages();
                 foreach (var pkgName in removePackages)
                 {
                     string pkgDir = Path.Combine(yooRoot, pkgName);
@@ -514,11 +513,6 @@
 
             File.Copy(item.FullName, to, true);
         }
-    }
-
-    static bool IsOPConfigFile(FileInfo file)
-    {
-        return file.Name.EndsWith("OPConfig.txt", StringComparison.OrdinalIgnoreCase);
     }
 
     /// <summary>
@@ -650,7 +644,7 @@
 
             foreach (var item in fromFiles)
             {
-                if (IsOPConfigFile(item))
+                if (AssetVersionUtility.IsOPConfigFileName(item.Name))
                     continue;
 
                 var extension = Path.GetExtension(item.FullName);
@@ -682,7 +676,7 @@
         FileExtersion.GetAllDirectoryFileInfos(_assetBundlePath, files);
         foreach (var file in files)
         {
-            if (IsOPConfigFile(file))
+            if (AssetVersionUtility.IsOPConfigFileName(file.Name))
                 continue;
 
             var extension = Path.GetExtension(file.FullName);
@@ -785,6 +779,21 @@
     {
         Debug.Log("[ClientPackage] 鎭㈠ YooAsset StreamingAssets 鍒板畬鏁寸姸鎬�...");
         YooAssetBuildTool.RestoreBuildOutputToStreamingAssets();
+    }
+
+    private static List<string> CreateHalfAssetRemovePackages()
+    {
+        var removePackages = new List<string> { "Battle", "Hero", "Audio", "Video", "UIEffect" };
+        if (!includeUI)
+        {
+            removePackages.Add("UI");
+            removePackages.Add("UIComp");
+            removePackages.Add("Sprite");
+            removePackages.Add("Texture");
+            removePackages.Add("Font");
+        }
+
+        return removePackages;
     }
 
     //闅忓寘瀹夎鐨勮祫婧愪笉鍚屽钩鍙颁笉涓�瀹氬彲浠ヨ幏鍙朏ileInfo锛屾墍浠ラ渶瑕佷笅杞戒竴涓枃浠舵潵鑾峰彇璧勬簮鐨凪D5淇℃伅
@@ -962,6 +971,45 @@
         }
     }
 
+    static void EnsureYooAssetNoCompressExtensions(string gradleTemplatePath)
+    {
+        if (!File.Exists(gradleTemplatePath))
+        {
+            Debug.LogWarning($"[ClientPackage] gradleTemplate.properties not found: {gradleTemplatePath}");
+            return;
+        }
+
+        string text = File.ReadAllText(gradleTemplatePath);
+        var lineRegex = new Regex(@"(?m)^unityStreamingAssets\s*=\s*(.*)$");
+        var match = lineRegex.Match(text);
+        var extensions = new List<string>();
+        var extensionSet = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
+
+        if (match.Success)
+        {
+            foreach (var value in match.Groups[1].Value.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
+            {
+                var extension = value.Trim();
+                if (extension.Length > 0 && extensionSet.Add(extension))
+                    extensions.Add(extension);
+            }
+        }
+
+        foreach (var extension in YooAssetNoCompressExtensions)
+        {
+            if (extensionSet.Add(extension))
+                extensions.Add(extension);
+        }
+
+        string newLine = "unityStreamingAssets=" + string.Join(",", extensions);
+        text = match.Success
+            ? lineRegex.Replace(text, newLine, 1)
+            : text.TrimEnd() + Environment.NewLine + newLine + Environment.NewLine;
+
+        File.WriteAllText(gradleTemplatePath, text, new UTF8Encoding(false));
+        Debug.Log($"[ClientPackage] Ensured Android noCompress extensions: {newLine}");
+    }
+
     /// <summary>
     /// 瀵煎嚭 Gradle 宸ョ▼鍓嶆竻鐞� Assets/Plugins/Android锛堜繚鐣� libs 鐩綍锛�
     /// </summary>

--
Gitblit v1.8.0