使用Jekins实现Unity打包apk(二)

前言:

之前有一篇说使用Jenkins给Unity打包(地址:https://blog.csdn.net/cyf649669121/article/details/81234566),但实际上还是有很多 问题不能实现;比如:

不能打开Unity的 编辑器;

Jenkins出包与编辑器 出包的效果不一样,比如数据缺失、 序列号文件出错 等;

所以现在需要对常规的Jenkins打包方法进行一写改造,主要方案 就是使Jenkins在打开Unity 编辑器的情况下进行打包

 

解决方案:

1、测试;

本地建立一个.bat文件,里面就写一个打开某GUI程序的命令,比如打开某个文件夹:

start D:\APK\ /max

然后让Jenkins运行这个文件。

本地直接运行自然是直接打开这个文件 夹了,但是如果用Jenkins运行就会卡住;

(如果你能直接打开文件夹了忽略以下步骤)

 

2、更改Jenkins服务属性;

先打开服务:

使用Jekins实现Unity打包apk(二)_第1张图片使用Jekins实现Unity打包apk(二)_第2张图片使用Jekins实现Unity打包apk(二)_第3张图片

然后找到Jenkins,右键 属性,登录,勾选允许桌面交互。之后应用,重启Jenkins服务。重复步骤1;

成功了就跳过下面,没有执行步骤3;

 

3、不出意外的话应该是 毫无鸟用,下面继续设置:

使用Jekins实现Unity打包apk(二)_第4张图片

改为输入你的 有管理员权限的账户和密码。之后确定,重启Jenkins,再尝试步骤1;

如失败执行步骤4;

以上参考:https://blog.csdn.net/lb445720337/article/details/78969175

 

4、使用代理模式;

果不其然还是失败了!这个依旧毫无鸟用。

此时需要使用一个本地代理,来执行这个方法。

这里网上就有很多方案了,参考https://blog.csdn.net/aiwoshishen/article/details/79988666

你可能需要(没有Launch agent via Java Web Start):https://blog.csdn.net/cindy3124/article/details/60763524

双击启动那个代理。

使用Jekins实现Unity打包apk(二)_第5张图片

成功了就有个这个东西在桌面上了,挂着他就好了, 之后可以写个宏来控制他;

 

5、绑定工程到节点;

在工程的 配置中将他绑定到你刚才那个节点;

使用Jekins实现Unity打包apk(二)_第6张图片

之后再次执行步骤1,如果不成功就没有办法了~~~

注意:更换了节点也就意味着更换了工作空间,  需要重新初始化工程!比如你的SVN 上的项目会先被清空然后重新Checkout一遍。

 

6、之后就可以执行你的打包 方法,删除 .bat 中的 -batchmode,然后再 打包吧!

虽然这个方法确实慢了一些,但是会少很多问题,毕竟打出来的包如果不能用,再快也没有鸟用对吧。

 

PS:关于节点,实际上那个slave-agent.jnlp文件直接双击运行即可,如果怕麻烦,通常的做法是在开机的时候用计划任务启动一个.bat文件来启动 这个脚本;我也尝试过能不能用Jenkins远程启动这个代理,实际上是不行的。因为没有没有代理就 不会启动窗口,不启动窗口就不会有代理……死循环了。。。

关于启动slave-agent.jnlp的写法,直接单纯地Call就可以了。

cd D:\Jenkins\workspace\
call slave-agent.jnlp
pause

但是这个脚本用jenkins启动的话并不能成功,所以只能放在Windows的开机计划里面。

如果代理是部署在局域网的其他终端上,然后终端的ip地址换了,那么需要把slave-agent.jnlp进行编辑(以文本方式打开),将里面所有的ip地址替换成现在用的ip地址就可以了。

PS2:

一般换了svn或者其他什么原因导致整个工作控件被清空了,一般打包会失败,此时是因为Unity工程内没有转成安卓平台导致的。此时需要用Unity打开工程,在BuildSetting里选择Android平台执行Switch Platform然后才可以。

 

 

 

你可能感兴趣的:(Unity)