Jenkins持续集成Unity游戏项目
Jenkins的安装部署和配置
Jenkins中的Android打包任务设计
Jenkins中的iOS打包任务设计
Jenkins中的测试任务设计
实现界面
Unity项目的结构
Untiy代码管理中分支是上线的版本,所以主要以它为版本进行分析。
Unity导出时候分三个版本,官网,第三方,腾讯。以宏来控制版本,和脚本删除不需要的脚本
由于使用的是Jenkins全部是命令行出包,Unity打包脚本如下
- 代码中ExportGYTProject_Online为需要调用Unity的CMD命令,getCMDArgs为对进行传入Unity命令行的命令解析
Android工程区分
官网的Android模板
都是只需要修改Mainfast.xml中channelid的参数就可以。
所以官网的Android模板只有一个。
每次通过Ant来修改channelid然后直接执行Ant release即可,并移动到指定目录
第三方的Android模板
由于每个渠道都是需要接入指定的SDK。
一开始考虑接入所有SDK,然后通过修改XML中的配置参数然后来调用不同SDK,然后发现部分SDK有冲突而且包会变得巨大无比。
然后修改为每个渠道一个Android模板,然后在导出指定版本的Unity后,移动Assets下的目录到Android工程包,然后执行Ant release。
腾讯的Android模板
由于比较奇特,所以单独抽取了出来进行打包。
#打包流程
CheckOut
使用的是Jenkins的SVN自己输出但是这里有个特殊点:
我们的项目由于前期的历史问题主干与分支是同级目录,所以在使用获取SVN目录时候使用的是我自己的脚本如下:
reBuildAndroidLib
由于是Unity导出时候分主工程和一个Lib在导入后需要重新应用Lib一开始使用的手工加上引用。
但是后来发现Android命令可以直接引用,但是没来的及修改代码参考如下:
reBuildAndroid
这里的–tatget 3 是根据自己的本地Android来设置的,可以参考命令说明修改
BuildApk
代码上面已经给出
SignApk
采用python脚本,由于这个脚本不是我们提供的,所以不贴出脚本了,也比较简单的。根据不同渠道签名。
加固混淆包
采用python脚本,由于加固的提供方是公司购买的也不提供代码了,由于他们不支持curl所以都是网页提交的,这里的python脚本主要是直接进行模拟网页操作提交。
分析APK文件
使用的JAVA来实现。Java代码比较多,我就说下思路,或者有空我开个新的帖子说下Ant的扩展实现。
思路根据APK使用CMD命令来调用Android命令行工具获取返回值,然后进行输出。
QA测试
QA测试使用WeTest,在Jenkins的打包选项内可以进行设置是否集成Wetest,然后直接进行测试
发布
发布到百度云传给运营商,然后上线。
最后做个小广告~
喜欢的可以转载下我的小文章
Blog:http://www.hailantown.com