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文件夹


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

查看所有标签

猜你喜欢:

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

现代信息检索

现代信息检索

(西班牙) Ricardo Baeza-Yates、(巴西)Berthier Ribeiro-Neto / 机械工业出版社 / 2011-3 / 78.00元

本书不仅详细介绍了信息检索的所有主要概念和技术,以及有关信息检索面的所有新变化,而且其组织使读者既可以对现代信息检索有一个全面的了解,又可以获取现代信息检索所有关键主题的详细知识。本书的主要内容由信息检索领域的代表人物Baeza-Yates和Ribeiro-Neto编写,对于那些希望深入研究关键领域的读者,书中还提供了由其他主要研究人员编写的关于特殊主题的发展现状。 与上一版相比,本版在内容......一起来看看 《现代信息检索》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具