using System; using System.Collections.Generic; using System.Diagnostics; using UnityEditor; using UnityEngine; using BFEditor.Build; public class JenkinsAdapter { /// /// 构建版本号 /// private static string BuildVersion = (int.Parse(DateTime.Now.ToString("yyMMddHH"))).ToString(); private static bool _oldShowSplash = false; /// /// 通用设置 /// private static bool CommonSetting(BuildTargetGroup target) { _oldShowSplash = PlayerSettings.SplashScreen.show; //去掉Unity的SplashScreen PlayerSettings.SplashScreen.show = false; return true; } private static void BuildAddressable(BuildTargetGroup target, BuildTarget buildTarget) { // EditorUserBuildSettings.SwitchActiveBuildTarget(target, buildTarget); // AddressableEditor.BuildContent(); } //设置还原 private static void recover(BuildTargetGroup target) { PlayerSettings.SplashScreen.show = _oldShowSplash; AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); } //打包 app bundle [MenuItem("Jenkins/JenkinsBuildIos")] public static void CommandLineBuildIos() { //打包 if(!CommonSetting(BuildTargetGroup.iOS)){ return; }; BuildAddressable(BuildTargetGroup.iOS, BuildTarget.iOS); var buildInfo = new BuildInfo(); buildInfo.version = "0.1.0"; buildInfo.mode = "publish_release"; buildInfo.bundleName = "com.juzu.b6"; buildInfo.skipVersion = false; BuildProjectTools.BuildResources(buildInfo, Application.streamingAssetsPath, true); // 重新生成XLua CompileScriptsUtils.RegenerateXLuaCode(true); // 设置版本号 PlayerSettings.bundleVersion = buildInfo.version; //Jenkins要求自动构建最低ios8.0 PlayerSettings.iOS.targetOSVersionString = "10.0"; //设置Build为日期格式 PlayerSettings.iOS.buildNumber = BuildVersion; // 设置竖屏 PlayerSettings.defaultInterfaceOrientation = UIOrientation.Portrait; PlayerSettings.allowedAutorotateToPortrait = false; PlayerSettings.allowedAutorotateToPortraitUpsideDown = false; PlayerSettings.allowedAutorotateToLandscapeLeft = false; PlayerSettings.allowedAutorotateToLandscapeRight = false; // 关闭启动动画 PlayerSettings.SplashScreen.show = false; // 设置包名 PlayerSettings.SetApplicationIdentifier(BuildTargetGroup.iOS, buildInfo.bundleName); // 是否跳过版本控制 var symbols = "THREAD_SAFE;USE_AB"; if (buildInfo.skipVersion) { symbols = symbols + ";SKIP_VERSION;"; } PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.iOS, symbols); // 商品名称 PlayerSettings.productName = "Lonely Survivor"; // BuildType设置dev/release EditorUserBuildSettings.iOSBuildConfigType = iOSBuildType.Release; // 使用IL2CPP var scriptImp = ScriptingImplementation.IL2CPP; PlayerSettings.SetScriptingBackend(BuildTargetGroup.iOS, scriptImp); // 目标平台架构,目前支持ARM64 PlayerSettings.SetArchitecture(BuildTargetGroup.iOS, 1); EditorUserBuildSettings.development = false; BuildPipeline.BuildPlayer(GetBuildScenes(), GetIosBuildPath(), BuildTarget.iOS, BuildOptions.None); Console.WriteLine("Build Complete Path:" + GetIosBuildPath()); recover(BuildTargetGroup.iOS); } /// /// 获取build Setting 列表里的打勾场景 /// /// private static string[] GetBuildScenes() { List names = new List(); foreach (var x in EditorBuildSettings.scenes) { if (!x.enabled) continue; names.Add(x.path); } return names.ToArray(); } #region Get Build Path private static string GetIosBuildPath() { return "build/iOS"; } #endregion }