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 int versionCode = 7; private static string versionName = "1.1.6"; [MenuItem("Jenkins/JenkinsBuildIos")] public static void CommandLineBuildIos() { var buildInfo = new BuildInfo(); buildInfo.version = versionName; buildInfo.mode = "publish_release"; buildInfo.bundleName = "com.combo.heroes.puzzle.rpg"; buildInfo.skipVersion = false; BuildProjectTools.BuildResources(buildInfo, Application.streamingAssetsPath, true); // 重新生成XLua CompileScriptsUtils.RegenerateXLuaCode(true); // 设置版本号 PlayerSettings.bundleVersion = buildInfo.version; //Jenkins要求自动构建最低ios8.0 PlayerSettings.iOS.targetOSVersionString = "12.0"; //设置Build,每次需要增加 PlayerSettings.iOS.buildNumber = versionCode.ToString(); // 隐藏ios的横条 PlayerSettings.iOS.hideHomeButton = false; // 禁止在所有边缘上延迟手势 PlayerSettings.iOS.deferSystemGesturesMode = UnityEngine.iOS.SystemGestureDeferMode.All; // 设置竖屏 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 = "Knights Combo"; // BuildType设置dev/release EditorUserBuildSettings.iOSBuildConfigType = iOSBuildType.Release; EditorUserBuildSettings.development = false; // 使用IL2CPP var scriptImp = ScriptingImplementation.IL2CPP; PlayerSettings.SetScriptingBackend(BuildTargetGroup.iOS, scriptImp); // 目标平台架构,目前支持ARM64 PlayerSettings.SetArchitecture(BuildTargetGroup.iOS, 1); // 开始打包 BuildPipeline.BuildPlayer(GetBuildScenes(), GetIosBuildPath(), BuildTarget.iOS, BuildOptions.None); Console.WriteLine("Build Complete Path:" + GetIosBuildPath()); } /// /// 获取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 }