文件准备

打包机想要打安卓包,就需要建一个安卓版的工程。

我们首先进入我们存放Unity工程的文件夹,然后在其中新建ResLoadPrg_Android文件夹,进入此文件夹,使用TortoiseSVN——Checkout拉取工程。

使用UnityHub打开ResLoadPrg_Android,进入Unity将工程转换为安卓。转换完成后可以先尝试打一个安卓标准包。

Jenkins新建Android构建

我们模仿PC构建的过程,新建Android构建。

“新建item”——命名为“ResLoadPrg_Android”、Freestyle Project。

General

描述:ResLoadPrg Android打包

勾选“Discard Old Builds”,保持构建的天数:30,保持构建的最大个数:30

勾选“this project is parameterized”

String Parameter

名称:WorkPath

默认值:E:\UnityProjects\ResLoadPrg_Android

描述:工作目录

String Parameter

名称:Version

默认值:0.1

描述:版本号

String Parameter

名称:Build

默认值:0

描述:Build次数

String Parameter

名称:Name

默认值:ResLoadPrg

描述:打包出来的工程名

Boolean Parameter

名称:MulRendering

默认值:true

描述:多线程渲染

Boolean Parameter

名称:IL2CPP

默认值:false

描述:IL2CPP

Boolean Parameter

名称:Debug

默认值:false

描述:是否是Debug模式,如果是则打开Profile调试

Choice Parameter

名称:Place

默认值:

None
Xiaomi
Bilibili
Huawei
Meizu
Weixin

描述:不同渠道

打开“高级”——勾选“使用自定义工作空间”:E:\UnityProjects\ResLoadPrg_Android、“显示名称”:ResLoadPrg_Android

Build Steps

增加构建步骤——Execute Windows batch command

1
2
3
svn cleanup %WorkPath%
svn revert %WorkPath%
svn update %WorkPath% --username ATAO --password Unfbc8951,

增加构建步骤——Invoke Unity3D Editor

Unity3D installation name: 2021.3.22

Editor command line arguments:

1
-projectpath %WorkPath% -quit -batchmode -executeMethod BuildApp.BuildAndroid Place=$Place Version=$Version Name=$Name Build=$Build MulRendering=$MulRendering IL2CPP=$IL2CPP Debug=$Debug -logFile "E:\unityAndroidJenkins.txt"

打出来的安卓apk就是已经压缩好的,所以不需要调用压缩工具

构建后操作

选择archive the artifacts:

1
BuildTarget\Android\*.apk

Unity配置安卓keystore

新版Unity提供了安卓keystore生成工具,不用再自己使用命令行生成keystore了。

进入Unity,Edit——Project Settings——Player——选择安卓标签——下拉到Publishing Settings,点击“Keystore Manager”。

在弹出的窗口中点击“Keystore——Create New——Anywhere”,这样会把生成的keystore保存在ResLoadPrg_Android工程文件夹下,输入名称为“android.keystore”

生成keystore

接下来就需要填写keystore的内容,填写完成后Unity会自动应用到项目中,具体填写内容参考下面“使用java命令行生成密钥的方法(可选)”即可,几乎是一样的

工程文件夹下的android.keystore的密钥库需要上传到SVN

使用java命令行生成密钥的方法(可选)

命令行里输入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
C:\Users\atao\Desktop> keytool -genkey -alias resloadprg.keystore -keyalg RSA -validity 36500 -keystore android.keystore
输入密钥库口令:ataoandroid
再次输入新口令:ataoandroid
您的名字与姓氏是什么?
[Unknown]: atao
您的组织单位名称是什么?
[Unknown]: Atao
您的组织名称是什么?
[Unknown]: Atao
您所在的城市或区域名称是什么?
[Unknown]: Jinan
您所在的省/市/自治区名称是什么?
[Unknown]: Shandong
该单位的双字母国家/地区代码是什么?
[Unknown]: cc
CN=atao, OU=Atao, O=Atao, L=Jinan, ST=Shandong, C=cc是否正确?
[否]: y
输入 <resloadprg.keystore> 的密钥口令
(如果和密钥库口令相同,按回车):

在真实的输入中,输入密钥库口令:再次输入新口令:里面的口令是隐藏的

我们生成的android.keystore是一个主密钥库,里面的resloadprg.keystore是游戏对应的“别称”密钥,所以最后有一个输入 <resloadprg.keystore> 的密钥口令的环节,如果直接回车,则游戏的密钥和主密钥的口令(也就是密码)一致。

这样在桌面就生成了一个叫做android.keystore的密钥库。

将这个密钥库拷贝到ResLoadPrg_Android文件夹下,进入Unity,Edit——Project Settings——Player——选择安卓标签——下拉到Publishing Settings,勾选“Custom Keystore”。

工程文件夹下的android.keystore的密钥库需要上传到SVN

点击Select——Browse,选择ResLoadPrg_Android文件夹下的android.keystore,然后输入password:ataoandroid

在下面Project Key中的Alias——选择resloadprg.keystore,然后输入password:ataoandroid

注意

keystore的密码不会在Unity编辑器下保存,每次打包需要输入

我们可以每次打包时直接在代码中进行设置:

修改BuildApp中的Build方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[MenuItem("Build/标准包")]
public static void Build()
{
//打AB包
BundleEditor.Build();
//生成可执行程序
string abPath = Application.dataPath + "/../AssetBundle/" + EditorUserBuildSettings.activeBuildTarget.ToString() + "/";
Copy(abPath, Application.streamingAssetsPath);
string savePath = "";
if (EditorUserBuildSettings.activeBuildTarget == BuildTarget.Android)
{
PlayerSettings.Android.keystoreName = Application.dataPath.Replace("/Assets", "") + "/android.keystore";//+++
PlayerSettings.Android.keystorePass = "ataoandroid";//+++
PlayerSettings.Android.keyaliasName = "resloadprg";//+++
PlayerSettings.Android.keyaliasPass = "ataoandroid";//+++

savePath = m_AndroidPath + PlayerSettings.productName + "_" + EditorUserBuildSettings.activeBuildTarget.ToString()+ "_" + DateTime.Now.ToString("yyyy-MM-dd-HH-mm") + ".apk";
}
//...
}