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
}