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