Unity3D使用Jenkins进行自动打包

栏目: 后端 · 发布时间: 7年前

内容简介:Unity3D使用Jenkins进行自动打包

最近研究了一下JenKins自动打包,遇到了一些网上教程上没有提到的一些坑,于是决定也写一篇教程,希望能帮助到后来的开发者。

我主要参考的教程有:

雨松: Unity3D研究院之Jenkins的使用

钱康来: Jenkins自动化出包流程分享

1.Jenkins的安装与启动

首先在Jenkins的 官网 下载Jenkins软件,这里选择12周更新版还是1周更新版看你的喜好,我选择的是1周更新版。

安装后程序会自己启动,手动启动的方法是

java -jar /Applications/Jenkins/jenkins.war -httpPort=8080

这样就默认在8080端口启动了,第一次启动会问你要密钥,将Jenkins提示的地址从Finder中用快捷键就可以很快打开了

CMD + SHIFT + G

输入密钥之后会提示让你创建管理员账号,这里要注意所有的输入框都要填写内容,我就是邮件没有填就点了提交,结果等了很久也没有反应。

2.破解版MAC Unity的安装

下一步就是安装Unity了,已经会破解Unity的可以跳过这一步,我在找教程的时候走了一些弯路,觉得还是有必要介绍一下。

教程可以参考 这篇

我把 破解文件 公开出来,这样就不必在蛮牛上繁琐的回复可见了

破解时要注意一定要把Unity和破解文件按照版本对应好,如果不匹配的话,很可能打包出错但是很久找不到原因。

3.Android SDK的安装与第一个坑

我一开始是使用的Android Studio下载SDK的办法,这里遇到一个坑,就是安装好的Android Studio就是获取不到Android SDK的地址,不管选择什么目录都提示Android已安装,下一步之后又丢失掉Android SDK 的路径。

这个我后来的解决办法是放弃使用Android Studio而是直接使用它的命令行工具,使用 工具 下载了几个Android SDK之后,再使用Android Studio访问这个目录就可以正确识别了

这里提供几个命令:

sdkmanager --list (获取全部SDK列表)

sdkmanager "platforms;android-14" (下载 14版本的SDK)

4.配置Unity与第二个坑

接下来就是配置Unity了,主要就是配置JDK和Android SDK

这里我遇到一个坑是Unity打包总是提示

Error:Invalid command android

通过查阅 资料 得知这个错误的原因是,Android SDK 26以后版本的打包API有变更,而Unity还是使用的旧版本的API导致。

这个解决方法有两个一个是使用新版本Unity,另一个是使用旧版本的Android SDK,我选择后者,安装了24版本的SDK,解决了这个问题。

5.配置Jenkins

接下来是配置Jenkins,这里首先先安装两个插件

Manage Jenkins--> Manage Plugins --> Available -->Xcode integration && Unity3d plugin

然后在Jenkins->系统管理->Global Tool Configuration ->Unity3d 中填写Unity的安装路径,如果有多个Unity版本,可以填写多个,用别称区分。

然后就可以配置打包工程了,选择 Jenkins->新建->构建一个自由风格的软件项目->ok

在General->参数化构建->添加参数 这里可以添加你想要的参数,我目前使用了这些参数,这些参数可以在后面的脚本中通过 $ + 参数名获取到

ChannelName (Choice)

AppMode (Choice)

UseAssetsBundle (Bool)

UseLua (Bool)

ExportPath (string)

然后在源码管理中输入你的项目地址,如果有密码,则还需要输入账户密码,这里允许读取多个库合并成一个项目,很方便。

最后在构建项目中点击 增加构建步骤 -> Invoke Uinty3d Editor 我使用的参数是

-quit -batchmode -executeMethod ProjectBuildService.BuildForAndroid ChannelName-$ChannelName AppMode-$AppMode UseAssetsBundle-$UseAssetsBundle ExportPath-$ExportPath UseLua-$UseLua

可以看到把前面声明的参数全部使用到了,这些参数的意思是调用ProjectBuildService.BuildForAndroid方法,并将以上参数传入

下面还需要在Unity中接收并解析这些参数,这里试举一例

public static bool isUseAssetsBundle { get { //这里遍历所有参数,找到 UseAssetsBundle 开头的参数, 然后把-符号 后面的字符串返回, foreach (string arg in Environment.GetCommandLineArgs()) { if (arg.StartsWith("UseAssetsBundle")) { return bool.Parse(arg.Split("-"[0])[1]); } } return false; } }

6.Tips

MAC获取文件夹路径的简便方法:将文件夹拖入终端

参考 这篇教程 共享MAC文件夹


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

精通Git(第2版)

精通Git(第2版)

Scott Chacon、Ben Straub / 门佳、刘梓懿 / 人民邮电出版社 / 2017-9 / 89.00元

Git 仅用了几年时间就一跃成为了几乎一统商业及开源领域的版本控制系统。本书全面介绍Git 进行版本管理的基础和进阶知识。全书共10 章,内容由浅入深,展现了普通程序员和项目经理如何有效利用Git提高工作效率,掌握分支概念,灵活地将Git 用于服务器和分布式工作流,如何将开发项目迁移到Git,以及如何高效利用GitHub。一起来看看 《精通Git(第2版)》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具