TeamCity自动化打包Unity项目

TeamCity是 JetBrains旗下的一款持续集成(Continuous Integration,简称CI)工具,开箱即用。 下载链接 https://www.jetbrains.com/teamcity/

Windows下安装:

请确保系统中已经安装了maven和git软件,并正确配置了环境变量。这很重要。

Maven下载链接  https://maven.apache.org/download.cgi

Git 下载链接 https://git-scm.com/download/win

Build Agent:构建代理,实际代码集成构建的载体,默认和TC服务Server安装在同一台服务器上。TC支持多构建代理,TC Server可以连接不同服务器上的多个不同构建代理,协同工作。由于当前是在演练环境,请勾选。

Server:TC服务,主要承载TC的核心服务和web界面,请勾选。

同时,勾选Windows Service,安装windows服务。

默认端口是80 建议修改成其他端口 这里我使用了8111端口

都选择system 即可

 

开启服务

打开网址 http://localhost:8111/  一直下一步进行配置即可

安装就到此结束

 

现在我们就开始unity的设置

既然要自动化打包构建unity项目 那么首先我们需要有一个unity项目
新建一个Unity项目 名字叫做 TeamCityUnity  这里我使用的unity 版本是2018.4.1f1 不过版本并不重要 随意即可
 
场景内直接创建一个text  输入Test TeamCity  保存场景  测试场景就创建完毕了
 
现在我们开始写打包脚本 
Project界面下新建Editor文件夹  在Editor下新建TestBuild脚本
 

新建函数 BuildApk  函数必须是静态函数

public static void BuildApk()
{
    var outdir = System.Environment.CurrentDirectory + "/BuildOutPutPath/Android";
    var outputPath = Path.Combine(outdir, Application.productName + ".apk");
    //文件夹处理
    if (!Directory.Exists(outdir)) Directory.CreateDirectory(outdir);
    if (File.Exists(outputPath)) File.Delete(outputPath);

    //开始项目一键打包
    string[] scenes = new[] {"Assets/Scenes/SampleScene.unity"};
    UnityEditor.BuildPipeline.BuildPlayer(scenes, outputPath, BuildTarget.Android, BuildOptions.None);
    if (File.Exists(outputPath))
    {
        Debug.Log("Build Success :" + outputPath);
    }
    else
    {
        Debug.LogException(new Exception("Build Fail! Please Check the log! "));
    }
}
因为是在windows电脑上演示 所以就不能打包IOS 的Ipa包了 不过可以打包Xcode 工程 只需要将BuildTarget修改一下即可
 
差点忘记了重要的部分关于PlayerSetting 的设置此处就不在赘述 不会的请自行百度
这里直说一点 因为我们这里使用的是Gradle方式进行打包 所以需要创建一个KeyStore文件 
可以使用AndroidStudio 或 Eclipse 进行创建
然后代码中 添加对KeyStore的配置 直接写在函数最上方即可
PlayerSettings.Android.keystoreName = "文件完整路径";
PlayerSettings.Android.keystorePass = "密码";
PlayerSettings.Android.keyaliasName = "别名";
PlayerSettings.Android.keyaliasPass = "别名密码";

我们这里现在本地测试一遍 打包是否可以成功 Editor文件夹下 新建测试脚本Test

public class Test
{
    [MenuItem("Build/BuildApk")]
    public static void BuildApk()
    {
        TestBuild.BuildApk();
    }
}

回到Unity界面 点击菜单上的buildApk 

 
打包成功
 
我这里项目的版本管理使用的是github托管 将我这个项目上传到github
 
 
现在我们直接打开网页  http://localhost:8111/ 
终于走到了正题
 
首先 创建项目 
 
填入刚才创建的项目的git地址  
填入项目名和build
 
当git拉取完毕后 会自动分析项目是什么项目  不过分析的可能不准  所以
配置插件
 
点击右上角
左侧菜单拉到最底下 点击Plugins List
点击Browse
点击 Proceed
 
搜索Unity 
安装到本地
然后启用插件
 
现在就已经完成了unity 插件的配置 
不过也许你正好就可以用了 但是你也可能遇到问题 这里的Unity 插件搜索的unity 目录 是默认在 Program Files下搜索 Unityx.x.x
所以如果你的unity 安装目录是在其他目录 你的agent 可能就会告诉你 不兼容unity项目  所以我们需要配置unity 路径  我们先看一下插件的官网是怎么说的
ok 所以我们现在只需要根据上面所说 配置UNITY_HOME(UNITY_HINT_PATH)即可
 
解决了这个问题 我们现在就可以来配置Unity 的Step了
点击项目 选择刚才创建的build
 
编辑这个build 配置
新建一个步骤
新建unity 步骤
 
这里只需要配置打包函数即可 选择我们刚才写的函数 保存即可
点击run 即可
然后你会发现成功了  但是我现在要告诉你的是 这里的success 的意思只是打包步骤执行成功了 打没打包可不一定 里面的报错 我们要去看Build Log
点击success  点击Build Log
 
还记得我们在打包函数里输出了build 是否成功  我们先找到输出
很不幸 打包失败了  不过 打包失败并不可怕 我们来找到失败的原因是什么
查了错误的原因 是因为sdk找不到  但是我们在unity内测试已经打包成功了 怎么会找不到sdk呢  
经过一番查询 我终于找到了解决方法  需要配置sdk路径
打开配置表
 
在配置表中增加一行
env.ANDROID_HOME= SDK的路径 保存 agent 会自动检测更新配置
 
现在我们再次运行
 
 
成功了。 现在安装apk 到手机上看看是不是我们做的测试apk
 
 
 
ok 大工告成
 
 
这里我遇到的问题也没有什么参考资料 只能靠百度 google 自己去查找错误  也是这样自己的印象也是很深刻 
如果你在使用的时候遇到了其他的问题 如果百度 google 找不到的话 欢迎和我一起讨论 QQ 2474252111
 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值