unity使用命令行打包的时候是不能再开一个unity编辑器窗口进行工作的,所以常规有一个额外的打包服务器。一般手游都需要接SDK,所以常规是导出一个androidstudio(IL2cpp)工程

1.基础配置

1.1 安装jenkins

在官网下载jenkins安装包即可。jenkins需要填一个jdk路径,所以就需要先下载一个jdk 1.8

1.2 配置JDK

- Manage Jenkins→Global Tool Configuration→JDK。
- 设置JDK
    - 别名:jdk 1.8
    - JAVA_HOME: *1步骤中下载的jdk安装路径,如果是默认安装则在 C:\Program Files\Java\jdk1.8.0_31*

1.3 配置Gradle

- 安装Gradle
    - Manage Jenkins→Global Tool Configuration→Gradle。
        - name: gradle版本号
        - 我勾选了Install automatically,选择了一个6.8的版本
- 设置GRADLE_USER_HOME
    - Dashboard→Manage Jenkins→Configure System→Environment variables→add
        - key:GRADLE_USER_HOME
        - value:C:\Users\admin\.gradle\wrapper\dists\gradle-6.8-bin\1jblhjyydfkclfzx1agp92nyl\gradle-6.8

2.创建任务

创建一个自由任务

1 General→使用自定义的工作空间→unity导出的工程下的launcher目录

2 构建→Invoke Gradle→选择安装的版本6.8

3 Tasks:clean assembleRelease —stacktrace —debug

3.其他选项

完成1、2两个步骤就可以打出一个默认unity工程的apk了。实际开发过程中会有一些其他的设置

3.1 Flaovrs

当接入不同渠道后需要不同渠道进行打包,Android工程需要做好Flavors的支持。

3.1.1 安卓工程配置Flavors

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
安卓工程Gradle示例:
productFlavors {
develop {
dimension 'default'
applicationId 'com.yileweb.rome'
versionCode VERSION_CODE.toInteger()
versionName VERSION_NAME.toString()

buildConfigField "int","game_distribution",""
buildConfigField "String","distribution_appId","\\"\\""
buildConfigField "String","distribution_appKey","\\"\\""
buildConfigField "String","game_channel","\\"\\""
buildConfigField "String","bugly_id","\\"\\""

manifestPlaceholders=[
"game_name":"显示名称",
"game_icon":"@mipmap/app_icon"
]
}
}

3.1.2 Jenkins配置

  • job->general->This project is parameterized增加参数
    • BUILD_TYPE: 固定 Debug 跟Release
    • BUILD_FLAVOR:productFlavors下的flavorsName 例:Default
    • VERSION_CODE:版本id
    • VERSOIN_name:版本Name
    • BUILD_TIME:构建时间(需要安装Date Parameter插件)
  • job->构建->Gradle->高级->勾选Pass all job parameters as Project properties(将上述参数注入到Gradle.propertys中)
  • job->构建->Gradle->task变更为 clean assemble${BUILD_FLAVOR}${BUILD_TYPE}

3.2 构建完成后下载APK

3.2.1 Tomcat

下载Tomcat一路下一步安装

3.2.2 构建日志增加下载链接

  • 允许html格式:Dashboard ->Configure Global Security->标记格式器->Safe HTML
  • 追加链接:job->构建后操作->新增 SetBuild description -> Description
1
<a href='<http://172.16.61.14:9090/download/DGQST-${BUILD_FLAVOR}-${BUILD_TYPE}-${VERSION_CODE}-${BUILD_TIME}.apk>'>APK下载链接</a>

下载链接中的文件名需要跟Gradle脚本中的输出包名对应起来

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
android.applicationVariants.all { variant ->
variant.outputs.all { output ->
println variant.buildType
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
def time=BUILD_TIME.toString();
def tn=variant.buildType.name
tn=tn.replace('release','Release')
tn=tn.replace('debug','Debug')
def fileName = APK_NAME.toString()+"-"+variant.productFlavors[0].name+"-"+tn+"-"+variant.productFlavors[0].versionCode+"-"+time+".apk"
println("=========>>>>>>:"+fileName)
//3.0之后绝对路劲不被允许了
outputFileName=new File("../../../../../../../../../../download/",fileName)
}
}
}