From 6ab4f430f523d7a85589c7eef9523f6fa6c48aea Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期五, 11 十二月 2020 20:31:55 +0800
Subject: [PATCH] 0312 更新批量文字工具

---
 Assets/Editor/Tool/ClientPackage.cs |  233 ++++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 168 insertions(+), 65 deletions(-)

diff --git a/Assets/Editor/Tool/ClientPackage.cs b/Assets/Editor/Tool/ClientPackage.cs
index 45baa67..adf2a00 100644
--- a/Assets/Editor/Tool/ClientPackage.cs
+++ b/Assets/Editor/Tool/ClientPackage.cs
@@ -6,7 +6,7 @@
 using System.IO;
 using System.Text.RegularExpressions;
 using System.Text;
-using TableConfig;
+
 using Beebyte.Obfuscator;
 
 public class ClientPackage
@@ -16,24 +16,38 @@
 
     public static string auditOutTime = string.Empty;
 
-    public static string SDK_PLUGIN_PROJECT {
+    public static string SDK_PLUGIN_PROJECT
+    {
         get { return LocalSave.GetString("SDK_PROJECT_PATH"); }
         set { LocalSave.SetString("SDK_PROJECT_PATH", value); }
     }
 
-    public static bool obfuscatorEnabled {
+    public static bool obfuscatorEnabled
+    {
         get { return LocalSave.GetBool("obfuscatorEnabled", false); }
         set { LocalSave.SetBool("obfuscatorEnabled", value); }
     }
 
-    public static int AssetPrior {
+    public static int AssetPrior
+    {
         get { return LocalSave.GetInt("HalfAssetPrior", 1); }
         set { LocalSave.SetInt("HalfAssetPrior", value); }
     }
 
-    static string ANDROID_PLUGIN_PATH = Application.dataPath + "/Plugins/Android";
+    static string THE_2TH_WORLD_SDK_PATH = Application.dataPath + "/Plugins/Android/bin";
+    // static string MANIFEST_PATH = Application.dataPath + "/Plugins/Android/AndroidManifest.xml";
     static string iOS_PLUGIN_PATH = Application.dataPath + "/Plugins/iOS";
 
+    /// <summary>
+    /// 鎵撳寘
+    /// </summary>
+    /// <param name="_sdkPath">鏁村悎sdk璺緞</param>
+    /// <param name="_assetBundlePath">_assetBundle鐨勮祫婧愯矾寰勶紝榛樿鍦ㄩ」鐩洰褰曚笅鐨� AssetBundles/android</param>
+    /// <param name="_output">鎵撳寘瀹屾垚鍚庣殑杈撳嚭璺緞</param>
+    /// <param name="_publisherString">娓犻亾id锛屽彲鎵撳涓寘锛岀敤|鍒嗗壊</param>
+    /// <param name="_buildIndex">鎵撳寘搴忓簭鍙凤紝鐢ㄤ簬鏍囪瘑鍚嶇О</param>
+    /// <param name="_development">鏄惁涓哄紑鍙戠増</param>
+    /// <param name="_replace">ios鎵撳寘瀵煎嚭xcode宸ョ▼妯″紡锛孉ppend鍜孯eplace</param>
     public static void BuildPublishers(string _sdkPath, string _assetBundlePath, string _output, string _publisherString, int _buildIndex, bool _development, bool _replace)
     {
         var publisherIds = new List<string>();
@@ -116,7 +130,9 @@
                 if (file.FullName.Contains("Contact.txt")
                     || file.FullName.Contains("HelpInfo.txt")
                     || file.FullName.Contains("PriorBundle.txt")
-                    || file.FullName.Contains("PriorLanguage.txt"))
+                    || file.FullName.Contains("PriorLanguage.txt")
+                    || file.FullName.Contains("ApkUpdateUrl.txt")
+                    || file.FullName.Contains("InitialFunction.txt"))
                 {
                     builtInFiles.Add(file);
                     continue;
@@ -129,28 +145,21 @@
             var completeCount = 0;
             foreach (var item in builtInFiles)
             {
-                var directory = Path.GetDirectoryName(item.FullName);
-                if (!Directory.Exists(directory))
-                {
-                    Directory.CreateDirectory(directory);
-                }
-
-                var relativePath = FileExtersion.GetFileRelativePath(_assetBundlePath, item.FullName);
-                var to = StringUtility.Contact(ResourcesPath.Instance.StreamingAssetPath, relativePath);
-#if UNITY_ANDROID
                 var extension = Path.GetExtension(item.FullName);
                 if (extension == ".meta")
                 {
                     continue;
                 }
 
-                to = to + ".7z";
-                SevenZipUtility.Compress(item.FullName, to);
-                UnityEditor.EditorUtility.DisplayProgressBar("姝e湪鍘嬬缉璧勬簮", item.Name, (float)completeCount / totalCount);
-#elif UNITY_IOS
-                File.Copy(item.FullName,to,true);
-#endif
+                var relativePath = FileExtersion.GetFileRelativePath(_assetBundlePath, item.FullName);
+                var to = StringUtility.Contact(ResourcesPath.Instance.StreamingAssetPath, relativePath);
+                var directory = Path.GetDirectoryName(to);
+                if (!Directory.Exists(directory))
+                {
+                    Directory.CreateDirectory(directory);
+                }
 
+                File.Copy(item.FullName, to, true);
                 completeCount++;
             }
 
@@ -168,7 +177,7 @@
 
         if (halfPackages.Count > 0)
         {
-            Config.Instance.LoadPriorBundleConfig();
+            PriorBundleConfig.Init(true);
 
             var fromFiles = new List<FileInfo>();
             FileExtersion.GetAllDirectoryFileInfos(_assetBundlePath, fromFiles);
@@ -270,28 +279,21 @@
             var completeCount = 0;
             foreach (var item in fromFiles)
             {
-                var directory = Path.GetDirectoryName(item.FullName);
+                var relativePath = FileExtersion.GetFileRelativePath(_assetBundlePath, item.FullName);
+                var to = StringUtility.Contact(ResourcesPath.Instance.StreamingAssetPath, relativePath);
+                var directory = Path.GetDirectoryName(to);
                 if (!Directory.Exists(directory))
                 {
                     Directory.CreateDirectory(directory);
                 }
 
-                var relativePath = FileExtersion.GetFileRelativePath(_assetBundlePath, item.FullName);
-                var to = StringUtility.Contact(ResourcesPath.Instance.StreamingAssetPath, relativePath);
-#if UNITY_ANDROID
                 var extension = Path.GetExtension(item.FullName);
                 if (extension == ".meta")
                 {
                     continue;
                 }
 
-                to = to + ".7z";
-                SevenZipUtility.Compress(item.FullName, to);
-                UnityEditor.EditorUtility.DisplayProgressBar("姝e湪鍘嬬缉璧勬簮", item.Name, (float)completeCount / totalCount);
-#elif UNITY_IOS
-                File.Copy(item.FullName,to,true);
-#endif
-
+                File.Copy(item.FullName, to, true);
                 completeCount++;
             }
 
@@ -308,7 +310,31 @@
 
         if (bigPackages.Count > 0)
         {
-            FileExtersion.DirectoryCopy(_assetBundlePath, ResourcesPath.Instance.StreamingAssetPath);
+            var fromFiles = new List<FileInfo>();
+            FileExtersion.GetAllDirectoryFileInfos(_assetBundlePath, fromFiles);
+
+            var totalCount = fromFiles.Count;
+            var completeCount = 0;
+            foreach (var item in fromFiles)
+            {
+                var relativePath = FileExtersion.GetFileRelativePath(_assetBundlePath, item.FullName);
+                var to = StringUtility.Contact(ResourcesPath.Instance.StreamingAssetPath, relativePath);
+                var directory = Path.GetDirectoryName(to);
+                if (!Directory.Exists(directory))
+                {
+                    Directory.CreateDirectory(directory);
+                }
+
+                var extension = Path.GetExtension(item.FullName);
+                if (extension == ".meta")
+                {
+                    continue;
+                }
+
+                File.Copy(item.FullName, to, true);
+                completeCount++;
+            }
+
             for (int i = 0; i < bigPackages.Count; i++)
             {
 #if UNITY_ANDROID
@@ -324,7 +350,6 @@
     public static void BuildApk(string _sdkPath, string _output, string _publisher, int _buildIndex, bool _development)
     {
         PreBuild(_publisher, _buildIndex);
-
         var auditTimeFile = StringUtility.Contact(Application.dataPath, Path.DirectorySeparatorChar, "Resources/Config/AuditTime.txt");
         if (File.Exists(auditTimeFile))
         {
@@ -354,38 +379,68 @@
         // 閽堝鏌愪竴浜涙墦鍖呯殑鐗规畩鎬�, 杩欓噷鐗规寚渚濊禆鐨勭涓夋柟搴撳惈鏈夎祫婧愮殑闂
         // 杩欓噷瀵规湁杩欑鐗瑰瀷鐨勬笭閬撶殑sdk鍦ㄦ墦鍖呯殑鏃跺�欏樊寮傚寲gradle鏂囦欢
         // 鏇村悕鍘熸湁鏂囦欢
-        string _gradleTemplateUrl = EditorApplication.applicationContentsPath + "/PlaybackEngines/AndroidPlayer/Tools/GradleTemplates/";
-        string _gradleFileUrl = _gradleTemplateUrl + "mainTemplate.gradle";
-        string _diffGradleFileUrl = StringUtility.Contact(_sdkPath, "/GradleDiff/", versionConfig.appId, "/mainTemplate.gradle");
-        FileInfo _fileInfo = new FileInfo(_diffGradleFileUrl);
+        // string _gradleTemplateUrl = EditorApplication.applicationContentsPath + "/PlaybackEngines/AndroidPlayer/Tools/GradleTemplates/";
+        // string _gradleFileUrl = _gradleTemplateUrl + "mainTemplate.gradle";
+        // string _diffGradleFileUrl = StringUtility.Contact(_sdkPath, "/GradleDiff/", versionConfig.appId, "/mainTemplate.gradle");
+        // FileInfo _fileInfo = new FileInfo(_diffGradleFileUrl);
 
-        if (!_fileInfo.Exists)
-        {
-            EditorUtility.DisplayDialog("璀﹀憡", "Gradle妯″紡闇�瑕侀厤缃樊寮傛枃浠�,浣嗘槸娌℃湁鎵惧埌璇ユ枃浠�: " + _diffGradleFileUrl, "@Hale");
-            return;
-        }
+        // if (!_fileInfo.Exists)
+        // {
+        //     EditorUtility.DisplayDialog("璀﹀憡", "Gradle妯″紡闇�瑕侀厤缃樊寮傛枃浠�,浣嗘槸娌℃湁鎵惧埌璇ユ枃浠�: " + _diffGradleFileUrl, "@Hale");
+        //     return;
+        // }
 
-        _fileInfo.CopyTo(_gradleFileUrl, true);
+        // _fileInfo.CopyTo(_gradleFileUrl, true);
 
         // 绉诲姩閰嶇疆鏂囦欢鑷虫墦鍖呭伐浣滅洰褰曚腑
-
-        PlayerSettings.Android.keystoreName = Application.dataPath + "/Editor/Keystore/" + versionConfig.keystoreFileName + ".keystore";
+        var keystorePath = Application.dataPath + "/Editor/Keystore/" + versionConfig.keystoreFileName + ".keystore";
+        if (!File.Exists(keystorePath))
+        {
+            Debug.LogError("绛惧悕鏂囦欢涓嶅瓨鍦�");
+            return;
+        }
+        PlayerSettings.Android.keystoreName = keystorePath;
         PlayerSettings.Android.keystorePass = versionConfig.keystorePassword;
         PlayerSettings.Android.keyaliasName = versionConfig.keystoreAlias;
         PlayerSettings.Android.keyaliasPass = versionConfig.keystoreAliasPassword;
-        PlayerSettings.Android.targetSdkVersion = AndroidSdkVersions.AndroidApiLevel22;
+        // PlayerSettings.Android.targetSdkVersion = AndroidSdkVersions.AndroidApiLevel22;
         PlayerSettings.Android.bundleVersionCode = VersionConfig.GetVersionNumber(versionConfig.version);
 
         PlayerSettings.enableInternalProfiler = _development;
 
-        if (Directory.Exists(ANDROID_PLUGIN_PATH))
-        {
-            Directory.Delete(ANDROID_PLUGIN_PATH, true);
-        }
+        //鍒犻櫎鍘焥dk鏂囦欢
+        if (Directory.Exists(THE_2TH_WORLD_SDK_PATH))
+            Directory.Delete(THE_2TH_WORLD_SDK_PATH, true);
+        //鍒犻櫎鍘熸竻鍗曟枃浠�
+        // if (File.Exists(MANIFEST_PATH))
+        //     File.Delete(MANIFEST_PATH);
 
-        Debug.LogFormat("鎵цAndroid SDK 鏂囦欢鎷疯礉锛宖rom:{0};to:{1}", StringUtility.Contact(_sdkPath, "/Android/release"), ANDROID_PLUGIN_PATH);
-        FileExtersion.DirectoryCopy(StringUtility.Contact(_sdkPath, "/Android/release"), ANDROID_PLUGIN_PATH);
-        FileExtersion.DirectoryCopy(StringUtility.Contact(_sdkPath, "/ChannelDiff/Android/", versionConfig.appId), ANDROID_PLUGIN_PATH);
+        var variant = _development ? "debug" : "release";
+
+        // var manifestpath = StringUtility.Contact(_sdkPath, "/Channel/Android/", versionConfig.appId, "/AndroidManifest.xml");
+        var channelSdkPath = StringUtility.Contact(_sdkPath, "/Channel/Android/", versionConfig.appId, "/", variant);
+
+        // if (File.Exists(manifestpath))
+        // {
+        //     File.Copy(manifestpath, MANIFEST_PATH);
+        //     DebugEx.LogFormat("鎵цAndroid 娓呭崟鏂囦欢鎷疯礉锛宖rom:{0};to:{1}", manifestpath, MANIFEST_PATH);
+        // }
+        // else
+        // {
+        //     DebugEx.LogFormat("Android 娓呭崟鏂囦欢涓嶅瓨鍦紝{0}", manifestpath);
+        //     // return;
+        // }
+
+        if (Directory.Exists(channelSdkPath))
+        {
+            FileExtersion.DirectoryCopy(channelSdkPath, THE_2TH_WORLD_SDK_PATH);
+            DebugEx.LogFormat("鎵цAndroid 娓犻亾SDK 鏂囦欢鎷疯礉锛宖rom:{0};to:{1}", channelSdkPath, THE_2TH_WORLD_SDK_PATH);
+        }
+        else
+        {
+            DebugEx.LogFormat("Android 娓犻亾SDK鏂囦欢涓嶅瓨鍦紝{0}", channelSdkPath);
+            return;
+        }
 
         var option = AssetDatabase.LoadAssetAtPath<Options>("Assets/Editor/Beebyte/Obfuscator/ObfuscatorOptions.asset");
         if (option != null)
@@ -422,22 +477,27 @@
             Directory.Delete(iOS_PLUGIN_PATH, true);
         }
 
-        if (!versionConfig.appId.Equals("test"))
-        {
-            FileExtersion.DirectoryCopy(StringUtility.Contact(_sdkPath, "/ChannelDiff/iOS/", versionConfig.appId), iOS_PLUGIN_PATH);
-        }
+        // if (!versionConfig.appId.Equals("test"))
+        // {
+        FileExtersion.DirectoryCopy(StringUtility.Contact(_sdkPath, "/ChannelDiff/iOS/", versionConfig.appId), iOS_PLUGIN_PATH);
+        // }
 
         DateTime outTime;
         var correct = DateTime.TryParse(auditOutTime, out outTime);
+        var directory = Application.dataPath + Path.DirectorySeparatorChar + "Resources/Config";
+        if (!Directory.Exists(directory))
+        {
+            Directory.CreateDirectory(directory);
+        }
         File.WriteAllText(Application.dataPath + Path.DirectorySeparatorChar + "Resources/Config/AuditTime.txt", correct ? auditOutTime : "");
-        
+
         var option = AssetDatabase.LoadAssetAtPath<Options>("Assets/Editor/Beebyte/Obfuscator/ObfuscatorOptions.asset");
-        if (option!=null)
+        if (option != null)
         {
             option.enabled = obfuscatorEnabled;
             EditorUtility.SetDirty(option);
         }
-        
+
         AssetDatabase.SaveAssets();
         AssetDatabase.Refresh();
         PlayerSettings.iOS.buildNumber = VersionConfig.Get().buildIndex.ToString();
@@ -458,7 +518,7 @@
     {
         try
         {
-            var newVersionConfigPath = StringUtility.Contact("Assets/Resources/ScriptableObject/Config/VersionConfig", ".asset");
+            var newVersionConfigPath = StringUtility.Contact("Assets/Resources/VersionConfig", ".asset");
             var versionName = string.Empty;
             var fromVersionConfig = GetVersionConfig(_publisher, out versionName);
             var newVersionConfig = ScriptableObject.CreateInstance<VersionConfig>();
@@ -471,10 +531,18 @@
             newVersionConfig.buildTime = DateTime.Now.ToString("yy/MM/dd--HH:mm");
             newVersionConfig.buildIndex = _buildIndex;
 
+            if (File.Exists(Application.dataPath + "/Resources/Game.txt"))
+            {
+                File.Delete(Application.dataPath + "/Resources/Game.txt");
+            }
+
+            File.WriteAllText(Application.dataPath + "/Resources/Game.txt", GetGameId(_publisher));
+
             AssetDatabase.CreateAsset(newVersionConfig, newVersionConfigPath);
             EditorUtility.SetDirty(newVersionConfig);
 
             SetIconAndSplashImage(versionName);
+            //SetCreateRoleAnimation();
 
             PlayerSettings.companyName = "TheSecondWorld";
             PlayerSettings.productName = newVersionConfig.productName;
@@ -486,8 +554,11 @@
             PlayerSettings.allowedAutorotateToPortraitUpsideDown = false;
             PlayerSettings.bundleVersion = VersionConfig.GetVersionNumber(newVersionConfig.version).ToString();
 
-            CSObjectWrapEditor.Generator.ClearAll();
-            CSObjectWrapEditor.Generator.GenAll();
+            if (GetBuildTarget() == BuildTargetGroup.Android)
+            {
+                CSObjectWrapEditor.Generator.ClearAll();
+                CSObjectWrapEditor.Generator.GenAll();
+            }
         }
         catch (Exception ex)
         {
@@ -522,6 +593,22 @@
         return null;
     }
 
+    static string GetGameId(string _publisher)
+    {
+        var lines = File.ReadAllLines(versionsFilePath);
+        for (int i = 2; i < lines.Length; i++)
+        {
+            var line = lines[i];
+            var lineStrings = line.Split('\t');
+            if (lineStrings[0] == _publisher)
+            {
+                return lineStrings[7];
+            }
+        }
+
+        return "xbqy";
+    }
+
     static void SetIconAndSplashImage(string _versionName)
     {
         var buildTarget = GetBuildTarget();
@@ -554,6 +641,22 @@
         }
     }
 
+    public static void SetCreateRoleAnimation()
+    {
+        var from = "Assets/Editor/Video/CreateRoleMovie.mp4";
+        var to = "Assets/StreamingAssets/CreateRoleMovie.mp4";
+
+        if (!Directory.Exists(Application.dataPath + "StreamingAssets"))
+        {
+            Directory.CreateDirectory(Application.dataPath + "StreamingAssets");
+        }
+
+        if (AssetDatabase.LoadAssetAtPath<UnityEngine.Video.VideoClip>(to) == null)
+        {
+            AssetDatabase.CopyAsset(from, to);
+        }
+    }
+
     static BuildTargetGroup GetBuildTarget()
     {
 #if UNITY_ANDROID

--
Gitblit v1.8.0