From 6f8ed2e37f8762fb3501a671d0dca40bcd68edae Mon Sep 17 00:00:00 2001
From: client_Wu Xijin <364452445@qq.com>
Date: 星期日, 21 十月 2018 10:26:29 +0800
Subject: [PATCH] Merge branch 'master' into leonard

---
 Assets/Editor/Tool/ClientPackage.cs |  238 +++++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 164 insertions(+), 74 deletions(-)

diff --git a/Assets/Editor/Tool/ClientPackage.cs b/Assets/Editor/Tool/ClientPackage.cs
index cb4aece..b7e3b4b 100644
--- a/Assets/Editor/Tool/ClientPackage.cs
+++ b/Assets/Editor/Tool/ClientPackage.cs
@@ -1,31 +1,29 @@
-锘縰sing System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-using System;
-using UnityEditor;
-using System.IO;
-using System.Text.RegularExpressions;
-using System.Text;
-using TableConfig;
-
+锘縰sing System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using System;
+using UnityEditor;
+using System.IO;
+using System.Text.RegularExpressions;
+using System.Text;
+using TableConfig;
+
 public class ClientPackage
-{
-    public static readonly string versionsFilePath = Application.dataPath + Path.DirectorySeparatorChar + "Editor/VersionConfigs/Versions.txt";
+{
+    public static readonly string versionsFilePath = Application.dataPath + Path.DirectorySeparatorChar + "Editor/VersionConfigs/Versions.txt";
     public static readonly string[] baseLevels = new string[] { "Assets/Resources/Scenes/Launch.unity", "Assets/Resources/Scenes/Empty.unity" };
+
+    public static string auditOutTime = string.Empty;
 
     public static string SDK_PLUGIN_PROJECT {
         get { return LocalSave.GetString("SDK_PROJECT_PATH"); }
         set { LocalSave.SetString("SDK_PROJECT_PATH", value); }
-    }
-
-    static string ANDROID_PLUGIN_PATH = Application.dataPath + "/Plugins/Android";
-
-    static int packageIndex {
-        get { return LocalSave.GetInt("ClientPackageIndex", 1); }
-        set { LocalSave.SetInt("ClientPackageIndex", value); }
-    }
-
-    public static void BuildPublishers(string _sdkPath, string _assetBundlePath, string _output, string _publisherString, bool _development, bool _replace)
+    }
+
+    static string ANDROID_PLUGIN_PATH = Application.dataPath + "/Plugins/Android";
+    static string iOS_PLUGIN_PATH = Application.dataPath + "/Plugins/iOS";
+
+    public static void BuildPublishers(string _sdkPath, string _assetBundlePath, string _output, string _publisherString, int _buildIndex, bool _development, bool _replace)
     {
         var publisherIds = new List<string>();
         var tempStrings = _publisherString.Split(StringUtility.splitSeparator, StringSplitOptions.RemoveEmptyEntries);
@@ -49,7 +47,7 @@
                     }
                     break;
             }
-        }
+        }
 
         var smallPackages = new List<string>();
         var halfPackages = new List<string>();
@@ -93,16 +91,16 @@
             for (int i = 0; i < smallPackages.Count; i++)
             {
 #if UNITY_ANDROID
-                BuildApk(_sdkPath, _output, smallPackages[i], _development);
+                BuildApk(_sdkPath, _output, smallPackages[i], _buildIndex, _development);
 #elif UNITY_IOS
-                BuildIpa(smallPackages[i], _replace);
+                BuildIpa(_sdkPath, smallPackages[i], _buildIndex, _replace);
 #endif
             }
         }
 
         if (halfPackages.Count > 0)
         {
-            ConfigManager.Instance.PreLoadConfigs();
+            Config.Instance.LoadPriorBundleConfig();
             FileExtersion.DirectoryCopy(_assetBundlePath, ResourcesPath.Instance.StreamingAssetPath);
 
             var files = new List<FileInfo>();
@@ -176,9 +174,9 @@
             for (int i = 0; i < halfPackages.Count; i++)
             {
 #if UNITY_ANDROID
-                BuildApk(_sdkPath, _output, halfPackages[i], _development);
+                BuildApk(_sdkPath, _output, halfPackages[i], _buildIndex, _development);
 #elif UNITY_IOS
-                BuildIpa(halfPackages[i], _replace);
+                BuildIpa(_sdkPath, halfPackages[i], _buildIndex, _replace);
 #endif
             }
         }
@@ -189,19 +187,24 @@
             for (int i = 0; i < bigPackages.Count; i++)
             {
 #if UNITY_ANDROID
-                BuildApk(_sdkPath, _output, bigPackages[i], _development);
+                BuildApk(_sdkPath, _output, bigPackages[i], _buildIndex, _development);
 #elif UNITY_IOS
-                BuildIpa(bigPackages[i], _replace);
+                BuildIpa(_sdkPath, bigPackages[i], _buildIndex, _replace);
 #endif
             }
         }
 
-        packageIndex++;
     }
-
-    public static void BuildApk(string _sdkPath, string _output, string _publisher, bool _development)
+
+    public static void BuildApk(string _sdkPath, string _output, string _publisher, int _buildIndex, bool _development)
     {
-        PreBuild(_publisher);
+        PreBuild(_publisher, _buildIndex);
+
+        var auditTimeFile = StringUtility.Contact(Application.dataPath, Path.DirectorySeparatorChar, "Resources/Config/AuditTime.txt");
+        if (File.Exists(auditTimeFile))
+        {
+            File.Delete(auditTimeFile);
+        }
 
         var versionName = string.Empty;
         var versionConfig = GetVersionConfig(_publisher, out versionName);
@@ -223,10 +226,30 @@
             AssetDatabase.ImportAsset(versionConfigCSpath);
         }
 
+        // 閽堝鏌愪竴浜涙墦鍖呯殑鐗规畩鎬�, 杩欓噷鐗规寚渚濊禆鐨勭涓夋柟搴撳惈鏈夎祫婧愮殑闂
+        // 杩欓噷瀵规湁杩欑鐗瑰瀷鐨勬笭閬撶殑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);
+
+        if (!_fileInfo.Exists)
+        {
+            EditorUtility.DisplayDialog("璀﹀憡", "Gradle妯″紡闇�瑕侀厤缃樊寮傛枃浠�,浣嗘槸娌℃湁鎵惧埌璇ユ枃浠�: " + _diffGradleFileUrl, "@Hale");
+            return;
+        }
+
+        _fileInfo.CopyTo(_gradleFileUrl, true);
+
+        // 绉诲姩閰嶇疆鏂囦欢鑷虫墦鍖呭伐浣滅洰褰曚腑
+
         PlayerSettings.Android.keystoreName = Application.dataPath + "/Editor/Keystore/" + versionConfig.keystoreFileName + ".keystore";
         PlayerSettings.Android.keystorePass = versionConfig.keystorePassword;
         PlayerSettings.Android.keyaliasName = versionConfig.keystoreAlias;
         PlayerSettings.Android.keyaliasPass = versionConfig.keystoreAliasPassword;
+        PlayerSettings.Android.targetSdkVersion = AndroidSdkVersions.AndroidApiLevel22;
+        PlayerSettings.Android.bundleVersionCode = VersionConfig.GetVersionNumber(versionConfig.version);
 
         PlayerSettings.enableInternalProfiler = _development;
 
@@ -235,31 +258,47 @@
             Directory.Delete(ANDROID_PLUGIN_PATH, true);
         }
 
-        Debug.LogFormat("鎵цAndroid SDK 鏂囦欢鎷疯礉锛宖rom:{0};to:{1}", StringUtility.Contact(_sdkPath, "/Android/", versionConfig.appId), ANDROID_PLUGIN_PATH);
-        FileExtersion.DirectoryCopy(StringUtility.Contact(_sdkPath, "/Android/", versionConfig.appId), ANDROID_PLUGIN_PATH);
-        if (!versionConfig.appId.Equals("test"))
-        {
-            FileExtersion.DirectoryCopy(StringUtility.Contact(_sdkPath, "/娓犻亾宸紓/", versionConfig.productName), ANDROID_PLUGIN_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);
         AssetDatabase.SaveAssets();
         AssetDatabase.Refresh();
 
-        var index = packageIndex;
         if (_development)
         {
-            var apkName = StringUtility.Contact(_output, "/", versionName, "_", versionConfig.clientPackageFlag, "_v", versionConfig.m_Version, "_", index, "_development.apk");
+            var apkName = StringUtility.Contact(_output, "/", versionName, "_", versionConfig.clientPackageFlag, "_v", versionConfig.m_Version, "_", _buildIndex, "_development.apk");
             BuildPipeline.BuildPlayer(baseLevels, apkName, BuildTarget.Android, BuildOptions.Development | BuildOptions.ConnectWithProfiler | BuildOptions.AllowDebugging);
         }
         else
         {
-            var apkName = StringUtility.Contact(_output, "/", versionName, "_", versionConfig.clientPackageFlag, "_v", versionConfig.m_Version, "_", index, ".apk");
+            var apkName = StringUtility.Contact(_output, "/", versionName, "_", versionConfig.clientPackageFlag, "_v", versionConfig.m_Version, "_", _buildIndex, ".apk");
             BuildPipeline.BuildPlayer(baseLevels, apkName, BuildTarget.Android, BuildOptions.None);
         }
-    }
-
-    public static void BuildIpa(string _publisher, bool _replace)
+    }
+
+    public static void BuildIpa(string _sdkPath, string _publisher, int _buildIndex, bool _replace)
     {
-        PreBuild(_publisher);
+#if UNITY_IOS
+        PreBuild(_publisher, _buildIndex);
+
+        var versionName = string.Empty;
+        var versionConfig = GetVersionConfig(_publisher, out versionName);
+
+        if (Directory.Exists(iOS_PLUGIN_PATH))
+        {
+            Directory.Delete(iOS_PLUGIN_PATH, true);
+        }
+
+        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);
+        File.WriteAllText(Application.dataPath + Path.DirectorySeparatorChar + "Resources/Config/AuditTime.txt", correct ? auditOutTime : "");
+        AssetDatabase.SaveAssets();
+        AssetDatabase.Refresh();
         PlayerSettings.iOS.buildNumber = VersionConfig.Get().buildIndex.ToString();
         PlayerSettings.iOS.appleDeveloperTeamID = VersionConfig.Get().appleDeveloperTeamID;
 
@@ -271,9 +310,10 @@
         {
             XCodeProjectMod.BuildIOSProject_Append();
         }
-    }
-
-    private static void PreBuild(string _publisher)
+#endif
+    }
+
+    private static void PreBuild(string _publisher, int _buildIndex)
     {
         try
         {
@@ -288,7 +328,7 @@
 
             VersionConfig.Copy(fromVersionConfig, newVersionConfig);
             newVersionConfig.buildTime = DateTime.Now.ToString("yy/MM/dd--HH:mm");
-            newVersionConfig.buildIndex = packageIndex;
+            newVersionConfig.buildIndex = _buildIndex;
 
             AssetDatabase.CreateAsset(newVersionConfig, newVersionConfigPath);
             EditorUtility.SetDirty(newVersionConfig);
@@ -303,8 +343,15 @@
             PlayerSettings.allowedAutorotateToLandscapeRight = true;
             PlayerSettings.allowedAutorotateToPortrait = false;
             PlayerSettings.allowedAutorotateToPortraitUpsideDown = false;
-            PlayerSettings.bundleVersion = newVersionConfig.version;
+            PlayerSettings.bundleVersion = VersionConfig.GetVersionNumber(newVersionConfig.version).ToString();
 
+            var grachicSettings = new SerializedObject(AssetDatabase.LoadAllAssetsAtPath("ProjectSettings/GraphicsSettings.asset")[0]);
+            var lightmapStripping = grachicSettings.FindProperty("m_LightmapStripping");
+            lightmapStripping.intValue = 0;
+            var fogStripping = grachicSettings.FindProperty("m_FogStripping");
+            fogStripping.intValue = 0;
+
+            grachicSettings.ApplyModifiedProperties();
         }
         catch (Exception ex)
         {
@@ -316,8 +363,8 @@
             AssetDatabase.Refresh();
         }
 
-    }
-
+    }
+
     static VersionConfig GetVersionConfig(string _publisher, out string _versionName)
     {
         var lines = File.ReadAllLines(versionsFilePath);
@@ -337,8 +384,8 @@
 
         _versionName = string.Empty;
         return null;
-    }
-
+    }
+
     static void SetIconAndSplashImage(string _versionName)
     {
         var buildTarget = GetBuildTarget();
@@ -362,26 +409,29 @@
 
         if (buildTarget == BuildTargetGroup.Android)
         {
+            var projectSettings = new SerializedObject(AssetDatabase.LoadAllAssetsAtPath("ProjectSettings/ProjectSettings.asset")[0]);
+            var splashImageSetting = projectSettings.FindProperty("androidSplashScreen");
+            splashImageSetting.objectReferenceValue = splashImage.texture;
+            projectSettings.ApplyModifiedProperties();
+
             PlayerSettings.Android.splashScreenScale = AndroidSplashScreenScale.ScaleToFill;
         }
 
         var logoFromPath = "Assets/Editor/Logo/" + _versionName + "/TB_DL_Logo.png";
         var logoToPath = "Assets/Resources/UI/Sprites/TB_DL_Logo.png";
-
         AssetDatabase.DeleteAsset(logoToPath);
         AssetDatabase.CopyAsset(logoFromPath, logoToPath);
 
-        var importerPath = "Assets/Resources/UI/Sprites/TB_DL_Logo.png";
-        var importer = AssetImporter.GetAtPath(importerPath);
-        var textureImporter = importer as TextureImporter;
-        if (textureImporter != null)
+        var logoImporterPath = "Assets/Resources/UI/Sprites/TB_DL_Logo.png";
+        var logoImporter = AssetImporter.GetAtPath(logoImporterPath);
+        var logoTextureImporter = logoImporter as TextureImporter;
+        if (logoTextureImporter != null)
         {
-            textureImporter.textureType = TextureImporterType.Sprite;
-            textureImporter.spritePackingTag = string.Empty;
-            textureImporter.assetBundleName = string.Empty;
+            logoTextureImporter.textureType = TextureImporterType.Sprite;
+            logoTextureImporter.spritePackingTag = string.Empty;
+            logoTextureImporter.assetBundleName = string.Empty;
 
             var platformSetting = new TextureImporterPlatformSettings();
-
             switch (buildTarget)
             {
                 case BuildTargetGroup.Android:
@@ -391,7 +441,6 @@
                     platformSetting.maxTextureSize = 512;
                     platformSetting.format = TextureImporterFormat.ETC2_RGBA8;
                     platformSetting.compressionQuality = 1;
-                    textureImporter.SetPlatformTextureSettings(platformSetting);
                     break;
                 case BuildTargetGroup.iOS:
                     platformSetting.overridden = true;
@@ -400,16 +449,57 @@
                     platformSetting.maxTextureSize = 512;
                     platformSetting.format = TextureImporterFormat.PVRTC_RGBA4;
                     platformSetting.compressionQuality = 1;
-                    textureImporter.SetPlatformTextureSettings(platformSetting);
                     break;
             }
 
-            AssetDatabase.ImportAsset(importerPath);
-            EditorUtility.SetDirty(textureImporter);
+            logoTextureImporter.SetPlatformTextureSettings(platformSetting);
+            AssetDatabase.ImportAsset(logoImporterPath);
+            EditorUtility.SetDirty(logoTextureImporter);
         }
 
-    }
-
+        var backGroundFromPath = "Assets/Editor/Logo/" + _versionName + "/Launch.png";
+        var backGroundToPath = "Assets/Resources/UI/Sprites/Launch.png";
+        AssetDatabase.DeleteAsset(backGroundToPath);
+        AssetDatabase.CopyAsset(backGroundFromPath, backGroundToPath);
+
+        var backGroundImporterPath = "Assets/Resources/UI/Sprites/Launch.png";
+        var backGrouindImporter = AssetImporter.GetAtPath(backGroundImporterPath);
+        var backGroundTextureImporter = backGrouindImporter as TextureImporter;
+        if (backGroundTextureImporter != null)
+        {
+            backGroundTextureImporter.textureType = TextureImporterType.Sprite;
+            backGroundTextureImporter.spritePackingTag = string.Empty;
+            backGroundTextureImporter.assetBundleName = string.Empty;
+
+            var platformSetting = new TextureImporterPlatformSettings();
+            switch (buildTarget)
+            {
+                case BuildTargetGroup.Android:
+                    platformSetting.overridden = true;
+                    platformSetting.allowsAlphaSplitting = false;
+                    platformSetting.name = "Android";
+                    platformSetting.maxTextureSize = 1024;
+                    platformSetting.format = TextureImporterFormat.ETC2_RGB4;
+                    platformSetting.compressionQuality = 1;
+                    break;
+                case BuildTargetGroup.iOS:
+                    platformSetting.overridden = true;
+                    platformSetting.allowsAlphaSplitting = false;
+                    platformSetting.name = "iOS";
+                    platformSetting.maxTextureSize = 1024;
+                    platformSetting.format = TextureImporterFormat.PVRTC_RGBA4;
+                    platformSetting.compressionQuality = 1;
+                    break;
+            }
+
+            backGroundTextureImporter.SetPlatformTextureSettings(platformSetting);
+            AssetDatabase.ImportAsset(backGroundImporterPath);
+            EditorUtility.SetDirty(backGroundTextureImporter);
+        }
+
+
+    }
+
     static BuildTargetGroup GetBuildTarget()
     {
 #if UNITY_ANDROID
@@ -419,6 +509,6 @@
 #else
         return BuildTargetGroup.Standalone;
 #endif
-    }
-
-}
+    }
+
+}

--
Gitblit v1.8.0