拓展BuildSetting

修改BuildApp脚本里面的BuildSetting

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
public class BuildSetting
{
/// <summary>
/// 版本号
/// </summary>
public string Version = "";
/// <summary>
/// Build次数
/// </summary>
public string Build = "";
/// <summary>
/// 程序名称
/// </summary>
public string Name = "";
/// <summary>
/// 是否Debug
/// </summary>
public bool Debug = true;
/// <summary>
/// 渠道
/// </summary>
public Place Place = Place.None;
/// <summary>
/// 多线程渲染
/// </summary>
public bool MulRendering = true;
/// <summary>
/// 是否IL2CPP
/// </summary>
public bool IL2CPP = false;
}
public enum Place
{
None,
Xiaomi,
Bilibili,
Huawei,
Meizu,
Weixin
}

BuildAndroid方法

BuildApp脚本里面添加BuildAndroid方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
#region 打包机调用打包安卓版本
public static void BuildAndroid()
{
PlayerSettings.Android.keystoreName = Application.dataPath.Replace("/Assets", "") + "/android.keystore";
PlayerSettings.Android.keystorePass = "ataoandroid";
PlayerSettings.Android.keyaliasName = "resloadprgandr";
PlayerSettings.Android.keyaliasPass = "ataoandroid";
//打AB包
BundleEditor.Build();
BuildSetting buildSetting = GetJenkinsAndroidBuildSetting();
string suffix = SetAndroidSetting(buildSetting);
//生成可执行程序
string abPath = Application.dataPath + "/../AssetBundle/" + EditorUserBuildSettings.activeBuildTarget.ToString() + "/";
DeleteDir(m_AndroidPath);
Copy(abPath, Application.streamingAssetsPath);

string savePath = m_AndroidPath + PlayerSettings.productName + "_Android" + suffix + string.Format("_{0:yyyy_MM_dd_HH_mm}.apk", DateTime.Now);

BuildPipeline.BuildPlayer(FindEnabledEditorScenes(), savePath, EditorUserBuildSettings.activeBuildTarget, BuildOptions.None);

DeleteDir(Application.streamingAssetsPath);
}
/// <summary>
/// 根据Jenkins的参数生成BuildSetting中间类
/// </summary>
static BuildSetting GetJenkinsAndroidBuildSetting()
{
string[] cmdArgs = Environment.GetCommandLineArgs();
BuildSetting buildSetting = new BuildSetting();
foreach (string arg in cmdArgs)
{
if (arg.StartsWith("Place"))
{
var tempParam = arg.Split(new string[] { "=" }, StringSplitOptions.RemoveEmptyEntries);
if (tempParam.Length == 2)
{
buildSetting.Place = (Place)Enum.Parse(typeof(Place), tempParam[1],true);
}
}
else if (arg.StartsWith("Version"))
{
var tempParam = arg.Split(new string[] { "=" }, StringSplitOptions.RemoveEmptyEntries);
if (tempParam.Length == 2)
{
buildSetting.Version = tempParam[1].Trim();
}
}
else if (arg.StartsWith("Build"))
{
var tempParam = arg.Split(new string[] { "=" }, StringSplitOptions.RemoveEmptyEntries);
if (tempParam.Length == 2)
{
buildSetting.Build = tempParam[1].Trim();
}
}
else if (arg.StartsWith("Name"))
{
var tempParam = arg.Split(new string[] { "=" }, StringSplitOptions.RemoveEmptyEntries);
if (tempParam.Length == 2)
{
buildSetting.Name = tempParam[1].Trim();
}
}
else if (arg.StartsWith("Debug"))
{
var tempParam = arg.Split(new string[] { "=" }, StringSplitOptions.RemoveEmptyEntries);
if (tempParam.Length == 2)
{
bool.TryParse(tempParam[1], out buildSetting.Debug);
}
}
else if (arg.StartsWith("MulRendering"))
{
var tempParam = arg.Split(new string[] { "=" }, StringSplitOptions.RemoveEmptyEntries);
if (tempParam.Length == 2)
{
bool.TryParse(tempParam[1], out buildSetting.MulRendering);
}
}
else if (arg.StartsWith("IL2CPP"))
{
var tempParam = arg.Split(new string[] { "=" }, StringSplitOptions.RemoveEmptyEntries);
if (tempParam.Length == 2)
{
bool.TryParse(tempParam[1], out buildSetting.IL2CPP);
}
}
}
return buildSetting;
}
/// <summary>
/// 根据Buildsetting设置工程
/// </summary>
/// <returns>设置参数后缀</returns>
static string SetAndroidSetting(BuildSetting buildSetting)
{
string suffix = "_";
if(buildSetting.Place != Place.None)
{
//在Unity中添加不同渠道包定义的宏
string symbol = PlayerSettings.GetScriptingDefineSymbolsForGroup(BuildTargetGroup.Android);
PlayerSettings.SetScriptingDefineSymbolsForGroup(BuildTargetGroup.Android, symbol+";"+buildSetting.Place.ToString());
suffix += buildSetting.Place.ToString();
}
if (!string.IsNullOrEmpty(buildSetting.Version))
{
PlayerSettings.bundleVersion = buildSetting.Version;
suffix += buildSetting.Version;
}
if (!string.IsNullOrEmpty(buildSetting.Build))
{
PlayerSettings.Android.bundleVersionCode = int.Parse(buildSetting.Build);
suffix += "_" + buildSetting.Build;
}
if (!string.IsNullOrEmpty(buildSetting.Name))
{
PlayerSettings.productName = buildSetting.Name;
//PlayerSettings.applicationIdentifier = "com.ATAO" + buildSetting.Name;
}
if (buildSetting.MulRendering)
{
PlayerSettings.MTRendering = true;
suffix += "_MTR";
}
else
{
PlayerSettings.MTRendering = false;
}
if(buildSetting.IL2CPP)
{
PlayerSettings.SetScriptingBackend(BuildTargetGroup.Android, ScriptingImplementation.IL2CPP);
suffix += "_IL2CPP";
}
else
{
PlayerSettings.SetScriptingBackend(BuildTargetGroup.Android, ScriptingImplementation.Mono2x);
}
if (buildSetting.Debug)
{
EditorUserBuildSettings.development = true;
EditorUserBuildSettings.connectProfiler = true;
suffix += "_Debug";
}
else
{
EditorUserBuildSettings.development = false;
}
return suffix;
}
#endregion