|  |  | 
 |  |  | using System.IO;
 | 
 |  |  | using System.Text.RegularExpressions;
 | 
 |  |  | using System.Text;
 | 
 |  |  | using TableConfig;
 | 
 |  |  | 
 | 
 |  |  | using Beebyte.Obfuscator;
 | 
 |  |  | 
 | 
 |  |  | public class ClientPackage
 | 
 |  |  | {
 | 
 |  |  |     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 SDK_PLUGIN_PROJECT
 | 
 |  |  |     {
 | 
 |  |  |     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); }
 | 
 |  |  |     }
 | 
 |  |  | 
 | 
 |  |  |     public static bool obfuscatorEnabled {
 | 
 |  |  |         get { return LocalSave.GetBool("obfuscatorEnabled", false); }
 | 
 |  |  |         set { LocalSave.SetBool("obfuscatorEnabled", value); }
 | 
 |  |  |     }
 | 
 |  |  | 
 | 
 |  |  |     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 iOS_PLUGIN_PATH = Application.dataPath + "/Plugins/iOS/The2thWorldSDK/The2thWorldRES.bundle";
 | 
 |  |  |     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)
 | 
 |  |  |     {
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  |         if (smallPackages.Count > 0)
 | 
 |  |  |         {
 | 
 |  |  |             var files = new List<FileInfo>();
 | 
 |  |  |             var builtInFiles = new List<FileInfo>();
 | 
 |  |  | 
 | 
 |  |  |             FileExtersion.GetAllDirectoryFileInfos(_assetBundlePath, files);
 | 
 |  |  |             foreach (var file in files)
 | 
 |  |  |             {
 | 
 |  |  |                 var fileName = Path.GetFileName(file.FullName);
 | 
 |  |  | 
 | 
 |  |  |                 if (file.FullName.Contains("builtin"))
 | 
 |  |  |                 {
 | 
 |  |  |                     builtInFiles.Add(file);
 | 
 |  |  |                     continue;
 | 
 |  |  |                 }
 | 
 |  |  | 
 | 
 |  |  |                 if (file.FullName.Contains("Contact.txt")
 | 
 |  |  |                     || file.FullName.Contains("HelpInfo.txt")
 | 
 |  |  |                     || file.FullName.Contains("PriorBundle.txt")
 | 
 |  |  |                     || file.FullName.Contains("PriorLanguage.txt")
 | 
 |  |  |                     || file.FullName.Contains("ApkUpdateUrl.txt"))
 | 
 |  |  |                 {
 | 
 |  |  |                     builtInFiles.Add(file);
 | 
 |  |  |                     continue;
 | 
 |  |  |                 }
 | 
 |  |  | 
 | 
 |  |  |                 File.Delete(file.FullName);
 | 
 |  |  |             }
 | 
 |  |  | 
 | 
 |  |  |             var totalCount = builtInFiles.Count;
 | 
 |  |  |             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("正在压缩资源", item.Name, (float)completeCount / totalCount);
 | 
 |  |  | #elif UNITY_IOS
 | 
 |  |  |                 File.Copy(item.FullName,to,true);
 | 
 |  |  | #endif
 | 
 |  |  | 
 | 
 |  |  |                 completeCount++;
 | 
 |  |  |             }
 | 
 |  |  | 
 | 
 |  |  |             EditorUtility.ClearProgressBar();
 | 
 |  |  | 
 | 
 |  |  |             for (int i = 0; i < smallPackages.Count; i++)
 | 
 |  |  |             {
 | 
 |  |  | #if UNITY_ANDROID
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  |         if (halfPackages.Count > 0)
 | 
 |  |  |         {
 | 
 |  |  |             Config.Instance.PreLoadConfigs();
 | 
 |  |  |             FileExtersion.DirectoryCopy(_assetBundlePath, ResourcesPath.Instance.StreamingAssetPath);
 | 
 |  |  |             PriorBundleConfig.Init(true);
 | 
 |  |  | 
 | 
 |  |  |             var files = new List<FileInfo>();
 | 
 |  |  |             FileExtersion.GetAllDirectoryFileInfos(StringUtility.Contact(ResourcesPath.Instance.StreamingAssetPath, "mob"), files);
 | 
 |  |  |             foreach (var file in files)
 | 
 |  |  |             var fromFiles = new List<FileInfo>();
 | 
 |  |  |             FileExtersion.GetAllDirectoryFileInfos(_assetBundlePath, fromFiles);
 | 
 |  |  | 
 | 
 |  |  |             var excludeFileFullNames = new List<string>();
 | 
 |  |  |             var tempFiles = new List<FileInfo>();
 | 
 |  |  |             FileExtersion.GetAllDirectoryFileInfos(StringUtility.Contact(_assetBundlePath, "/mob"), tempFiles);
 | 
 |  |  |             foreach (var file in tempFiles)
 | 
 |  |  |             {
 | 
 |  |  |                 var extersion = Path.GetExtension(file.FullName);
 | 
 |  |  |                 var fileName = Path.GetFileName(file.FullName);
 | 
 |  |  | 
 |  |  |                     fileName = fileName.Replace(extersion, "");
 | 
 |  |  |                 }
 | 
 |  |  | 
 | 
 |  |  |                 if (!PriorBundleConfig.mobs.Contains(fileName))
 | 
 |  |  |                 var prior = PriorBundleConfig.GetAssetPrior(AssetVersion.AssetCategory.Mob, fileName);
 | 
 |  |  |                 if (prior > AssetPrior)
 | 
 |  |  |                 {
 | 
 |  |  |                     File.Delete(file.FullName);
 | 
 |  |  |                     excludeFileFullNames.Add(file.FullName);
 | 
 |  |  |                 }
 | 
 |  |  |             }
 | 
 |  |  | 
 | 
 |  |  |             files.Clear();
 | 
 |  |  |             FileExtersion.GetAllDirectoryFileInfos(StringUtility.Contact(ResourcesPath.Instance.StreamingAssetPath, "maps"), files);
 | 
 |  |  |             foreach (var file in files)
 | 
 |  |  |             tempFiles.Clear();
 | 
 |  |  |             FileExtersion.GetAllDirectoryFileInfos(StringUtility.Contact(_assetBundlePath, "/maps"), tempFiles);
 | 
 |  |  |             foreach (var file in tempFiles)
 | 
 |  |  |             {
 | 
 |  |  |                 var extersion = Path.GetExtension(file.FullName);
 | 
 |  |  |                 var fileName = Path.GetFileName(file.FullName);
 | 
 |  |  | 
 |  |  |                     fileName = fileName.Replace(extersion, "");
 | 
 |  |  |                 }
 | 
 |  |  | 
 | 
 |  |  |                 if (!PriorBundleConfig.scenes.Contains(fileName))
 | 
 |  |  |                 var prior = PriorBundleConfig.GetAssetPrior(AssetVersion.AssetCategory.Scene, fileName);
 | 
 |  |  |                 if (prior > AssetPrior)
 | 
 |  |  |                 {
 | 
 |  |  |                     File.Delete(file.FullName);
 | 
 |  |  |                     excludeFileFullNames.Add(file.FullName);
 | 
 |  |  |                 }
 | 
 |  |  |             }
 | 
 |  |  | 
 | 
 |  |  |             files.Clear();
 | 
 |  |  |             FileExtersion.GetAllDirectoryFileInfos(StringUtility.Contact(ResourcesPath.Instance.StreamingAssetPath, "audio"), files);
 | 
 |  |  |             foreach (var file in files)
 | 
 |  |  |             tempFiles.Clear();
 | 
 |  |  |             FileExtersion.GetAllDirectoryFileInfos(StringUtility.Contact(_assetBundlePath, "/audio"), tempFiles);
 | 
 |  |  |             foreach (var file in tempFiles)
 | 
 |  |  |             {
 | 
 |  |  |                 var extersion = Path.GetExtension(file.FullName);
 | 
 |  |  |                 var fileName = Path.GetFileName(file.FullName);
 | 
 |  |  | 
 |  |  |                     fileName = fileName.Replace(extersion, "");
 | 
 |  |  |                 }
 | 
 |  |  | 
 | 
 |  |  |                 if (!PriorBundleConfig.audios.Contains(fileName))
 | 
 |  |  |                 var prior = PriorBundleConfig.GetAssetPrior(AssetVersion.AssetCategory.Audio, fileName);
 | 
 |  |  |                 if (prior > AssetPrior)
 | 
 |  |  |                 {
 | 
 |  |  |                     File.Delete(file.FullName);
 | 
 |  |  |                     excludeFileFullNames.Add(file.FullName);
 | 
 |  |  |                 }
 | 
 |  |  |             }
 | 
 |  |  | 
 | 
 |  |  |             files.Clear();
 | 
 |  |  |             FileExtersion.GetAllDirectoryFileInfos(StringUtility.Contact(ResourcesPath.Instance.StreamingAssetPath, "effect"), files);
 | 
 |  |  |             foreach (var file in files)
 | 
 |  |  |             tempFiles.Clear();
 | 
 |  |  |             FileExtersion.GetAllDirectoryFileInfos(StringUtility.Contact(_assetBundlePath, "/effect"), tempFiles);
 | 
 |  |  |             foreach (var file in tempFiles)
 | 
 |  |  |             {
 | 
 |  |  |                 var extersion = Path.GetExtension(file.FullName);
 | 
 |  |  |                 var fileName = Path.GetFileName(file.FullName);
 | 
 |  |  | 
 |  |  |                     fileName = fileName.Replace(extersion, "");
 | 
 |  |  |                 }
 | 
 |  |  | 
 | 
 |  |  |                 if (!PriorBundleConfig.effects.Contains(fileName))
 | 
 |  |  |                 var prior = PriorBundleConfig.GetAssetPrior(AssetVersion.AssetCategory.Effect, fileName);
 | 
 |  |  |                 if (prior > AssetPrior)
 | 
 |  |  |                 {
 | 
 |  |  |                     File.Delete(file.FullName);
 | 
 |  |  |                     excludeFileFullNames.Add(file.FullName);
 | 
 |  |  |                 }
 | 
 |  |  |             }
 | 
 |  |  | 
 | 
 |  |  |             tempFiles.Clear();
 | 
 |  |  |             FileExtersion.GetAllDirectoryFileInfos(StringUtility.Contact(_assetBundlePath, "/ui/sprite"), tempFiles);
 | 
 |  |  |             foreach (var file in tempFiles)
 | 
 |  |  |             {
 | 
 |  |  |                 var fileName = Path.GetFileName(file.FullName);
 | 
 |  |  |                 if (fileName == "loadingbg")
 | 
 |  |  |                 {
 | 
 |  |  |                     excludeFileFullNames.Add(file.FullName);
 | 
 |  |  |                 }
 | 
 |  |  |             }
 | 
 |  |  | 
 | 
 |  |  |             for (int i = fromFiles.Count - 1; i >= 0; i--)
 | 
 |  |  |             {
 | 
 |  |  |                 var item = fromFiles[i];
 | 
 |  |  |                 if (excludeFileFullNames.Contains(item.FullName))
 | 
 |  |  |                 {
 | 
 |  |  |                     fromFiles.RemoveAt(i);
 | 
 |  |  |                 }
 | 
 |  |  |             }
 | 
 |  |  | 
 | 
 |  |  |             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);
 | 
 |  |  |                 }
 | 
 |  |  | #if UNITY_ANDROID
 | 
 |  |  |                 var extension = Path.GetExtension(item.FullName);
 | 
 |  |  |                 if (extension == ".meta")
 | 
 |  |  |                 {
 | 
 |  |  |                     continue;
 | 
 |  |  |                 }
 | 
 |  |  | 
 | 
 |  |  |                 to = to + ".7z";
 | 
 |  |  |                 SevenZipUtility.Compress(item.FullName, to);
 | 
 |  |  |                 UnityEditor.EditorUtility.DisplayProgressBar("正在压缩资源", item.Name, (float)completeCount / totalCount);
 | 
 |  |  | #elif UNITY_IOS
 | 
 |  |  |                 File.Copy(item.FullName,to,true);
 | 
 |  |  | #endif
 | 
 |  |  |                 completeCount++;
 | 
 |  |  |             }
 | 
 |  |  | 
 | 
 |  |  |             EditorUtility.ClearProgressBar();
 | 
 |  |  |             for (int i = 0; i < halfPackages.Count; i++)
 | 
 |  |  |             {
 | 
 |  |  | #if UNITY_ANDROID
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  |         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);
 | 
 |  |  |                 }
 | 
 |  |  | #if UNITY_ANDROID
 | 
 |  |  |                 var extension = Path.GetExtension(item.FullName);
 | 
 |  |  |                 if (extension == ".meta")
 | 
 |  |  |                 {
 | 
 |  |  |                     continue;
 | 
 |  |  |                 }
 | 
 |  |  | 
 | 
 |  |  |                 to = to + ".7z";
 | 
 |  |  |                 SevenZipUtility.Compress(item.FullName, to);
 | 
 |  |  |                 UnityEditor.EditorUtility.DisplayProgressBar("正在压缩资源", item.Name, (float)completeCount / totalCount);
 | 
 |  |  | #elif UNITY_IOS
 | 
 |  |  |                 File.Copy(item.FullName,to,true);
 | 
 |  |  | #endif
 | 
 |  |  |                 completeCount++;
 | 
 |  |  |             }
 | 
 |  |  | 
 | 
 |  |  |             for (int i = 0; i < bigPackages.Count; i++)
 | 
 |  |  |             {
 | 
 |  |  | #if UNITY_ANDROID
 | 
 |  |  | 
 |  |  |     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))
 | 
 |  |  |         {
 | 
 |  |  |             File.Delete(auditTimeFile);
 | 
 |  |  |         }
 | 
 |  |  | 
 | 
 |  |  |         var versionName = string.Empty;
 | 
 |  |  |         var versionConfig = GetVersionConfig(_publisher, out versionName);
 | 
 |  |  | 
 |  |  |         // 更名原有文件
 | 
 |  |  |         string _gradleTemplateUrl = EditorApplication.applicationContentsPath + "/PlaybackEngines/AndroidPlayer/Tools/GradleTemplates/";
 | 
 |  |  |         string _gradleFileUrl = _gradleTemplateUrl + "mainTemplate.gradle";
 | 
 |  |  |         string _gradleFileUrl_cache = _gradleTemplateUrl + "mainTemplate_cache.gradle";
 | 
 |  |  | 
 | 
 |  |  |         if (File.Exists(_gradleFileUrl))
 | 
 |  |  |         {
 | 
 |  |  |             File.Move(_gradleFileUrl, _gradleFileUrl_cache);
 | 
 |  |  |         }
 | 
 |  |  | 
 | 
 |  |  |         string _diffGradleFileUrl = StringUtility.Contact(_sdkPath, "/GradleDiff/", versionConfig.appId, "/mainTemplate.gradle");
 | 
 |  |  |         FileInfo _fileInfo = new FileInfo(_diffGradleFileUrl);
 | 
 |  |  | 
 | 
 |  |  |         if (File.Exists(_diffGradleFileUrl))
 | 
 |  |  |         if (!_fileInfo.Exists)
 | 
 |  |  |         {
 | 
 |  |  |             File.Move(_diffGradleFileUrl, _gradleFileUrl);
 | 
 |  |  |             EditorUtility.DisplayDialog("警告", "Gradle模式需要配置差异文件,但是没有找到该文件: " + _diffGradleFileUrl, "@Hale");
 | 
 |  |  |             return;
 | 
 |  |  |         }
 | 
 |  |  | 
 | 
 |  |  |         _fileInfo.CopyTo(_gradleFileUrl, true);
 | 
 |  |  | 
 | 
 |  |  |         // 移动配置文件至打包工作目录中
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  |         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;
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  |         Debug.LogFormat("执行Android SDK 文件拷贝,from:{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 option = AssetDatabase.LoadAssetAtPath<Options>("Assets/Editor/Beebyte/Obfuscator/ObfuscatorOptions.asset");
 | 
 |  |  |         if (option != null)
 | 
 |  |  |         {
 | 
 |  |  |             option.enabled = obfuscatorEnabled;
 | 
 |  |  |             EditorUtility.SetDirty(option);
 | 
 |  |  |         }
 | 
 |  |  | 
 | 
 |  |  |         AssetDatabase.SaveAssets();
 | 
 |  |  |         AssetDatabase.Refresh();
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  |             var apkName = StringUtility.Contact(_output, "/", versionName, "_", versionConfig.clientPackageFlag, "_v", versionConfig.m_Version, "_", _buildIndex, ".apk");
 | 
 |  |  |             BuildPipeline.BuildPlayer(baseLevels, apkName, BuildTarget.Android, BuildOptions.None);
 | 
 |  |  |         }
 | 
 |  |  | 
 | 
 |  |  |         // 还原gradle文件
 | 
 |  |  |         if (File.Exists(_gradleFileUrl))
 | 
 |  |  |         {
 | 
 |  |  |             File.Delete(_gradleFileUrl);
 | 
 |  |  |         }
 | 
 |  |  | 
 | 
 |  |  |         if (File.Exists(_gradleFileUrl_cache))
 | 
 |  |  |         {
 | 
 |  |  |             File.Move(_gradleFileUrl_cache, _gradleFileUrl);
 | 
 |  |  |             File.Delete(_gradleFileUrl_cache);
 | 
 |  |  |         }
 | 
 |  |  |     }
 | 
 |  |  | 
 | 
 |  |  |     public static void BuildIpa(string _sdkPath, string _publisher, int _buildIndex, bool _replace)
 | 
 |  |  |     {
 | 
 |  |  | #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);
 | 
 |  |  |         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)
 | 
 |  |  |         {
 | 
 |  |  |             option.enabled = obfuscatorEnabled;
 | 
 |  |  |             EditorUtility.SetDirty(option);
 | 
 |  |  |         }
 | 
 |  |  |          | 
 |  |  |         AssetDatabase.SaveAssets();
 | 
 |  |  |         AssetDatabase.Refresh();
 | 
 |  |  |         PlayerSettings.iOS.buildNumber = VersionConfig.Get().buildIndex.ToString();
 | 
 |  |  | 
 |  |  |         {
 | 
 |  |  |             XCodeProjectMod.BuildIOSProject_Append();
 | 
 |  |  |         }
 | 
 |  |  | #endif
 | 
 |  |  |     }
 | 
 |  |  | 
 | 
 |  |  |     private static void PreBuild(string _publisher, int _buildIndex)
 | 
 |  |  |     {
 | 
 |  |  |         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>();
 | 
 |  |  | 
 |  |  |             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();
 | 
 |  |  |             CSObjectWrapEditor.Generator.ClearAll();
 | 
 |  |  |             CSObjectWrapEditor.Generator.GenAll();
 | 
 |  |  |         }
 | 
 |  |  |         catch (Exception ex)
 | 
 |  |  |         {
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  |             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 logoImporterPath = "Assets/Resources/UI/Sprites/TB_DL_Logo.png";
 | 
 |  |  |         var logoImporter = AssetImporter.GetAtPath(logoImporterPath);
 | 
 |  |  |         var logoTextureImporter = logoImporter as TextureImporter;
 | 
 |  |  |         if (logoTextureImporter != null)
 | 
 |  |  |         {
 | 
 |  |  |             logoTextureImporter.textureType = TextureImporterType.Sprite;
 | 
 |  |  |             logoTextureImporter.spritePackingTag = string.Empty;
 | 
 |  |  |             logoTextureImporter.assetBundleName = string.Empty;
 | 
 |  |  | 
 | 
 |  |  |             var platformSetting = new TextureImporterPlatformSettings();
 | 
 |  |  |             switch (buildTarget)
 | 
 |  |  |             {
 | 
 |  |  |                 case BuildTargetGroup.Android:
 | 
 |  |  |                     platformSetting.overridden = true;
 | 
 |  |  |                     platformSetting.allowsAlphaSplitting = false;
 | 
 |  |  |                     platformSetting.name = "Android";
 | 
 |  |  |                     platformSetting.maxTextureSize = 512;
 | 
 |  |  |                     platformSetting.format = TextureImporterFormat.ETC2_RGBA8;
 | 
 |  |  |                     platformSetting.compressionQuality = 1;
 | 
 |  |  |                     break;
 | 
 |  |  |                 case BuildTargetGroup.iOS:
 | 
 |  |  |                     platformSetting.overridden = true;
 | 
 |  |  |                     platformSetting.allowsAlphaSplitting = false;
 | 
 |  |  |                     platformSetting.name = "iOS";
 | 
 |  |  |                     platformSetting.maxTextureSize = 512;
 | 
 |  |  |                     platformSetting.format = TextureImporterFormat.PVRTC_RGBA4;
 | 
 |  |  |                     platformSetting.compressionQuality = 1;
 | 
 |  |  |                     break;
 | 
 |  |  |             }
 | 
 |  |  | 
 | 
 |  |  |             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()
 |