关闭

Unity3d Jenkins 打包Android

3245人阅读 评论(2) 收藏 举报
分类:

Jenkins是一个丰富的图形化构建平台。提供脚本命令工具(bat、shell、perl、python、ant等),代码管理工具(svn cvs等)及账号权限管理等上千个辅助插件。为软件的持续化集成工作流程提供完美支持。
下面将介绍,如何在windows下使用Jenkins输出Android apk包


配置环境

  • windows 7
  • Jenkins1.650
  • Unity3d4.6.7 (需要Pro版)
  • Android SDK (API 21以上)
  • JDK 1.8

创建Unity3d工程

  1. 新建C#脚本重命名为Main.cs
  2. Main.cs代码,如下

    public class Main : MonoBehaviour
    {
        private Rect rect = new Rect(0f, 0f, Screen.width , Screen.height);
        void OnGUI()
        {
            GUI.skin.label.fontSize = 40;
            GUI.Label(rect, "Hello Jenkins");
        }
    }
  3. 依次点击File->New Scene,新建场景,重命名为Main.unity
  4. 在Main.unity场景中,创建GameObject节点,重命名为Node
  5. 将Main.c挂载到节点Node上
    这里写图片描述
  6. 打开File->BuildSettings,将Main拖进到Scenes In Build窗口下
    这里写图片描述
  7. 保存以上所有信息。
  8. 运行可以看到如下图显示
    这里写图片描述
  9. 检查是否已正确配置包名,Anroid Sdk路径。建议先在Unity3d BuildSetting成功输出Android,以隔离下面Jenkins打包失败问题。

Unity打包命令

UnityEditor命令空间下,有打包接口(需要Pro版本)

public static string BuildPlayer(string[] levels, string locationPathName, BuildTarget target, BuildOptions options);

参数:
levels 为的打包的场景路径数据
locationPathName 包输出目录
target 输出平台
option 输出选项
上面4个参数的具体用处,其实对应下面的Unity图形界面
这里写图片描述
这里写图片描述
这里写图片描述
同时Unity3d支持以命令行形式启动,并且允执行一个Editor目录的静态方法。所以只要在此静态方法里使用BuildPlayer.BuildPlayer即可以通过命令行实现打包功能。命令行的各项参数见官方文档
http://docs.unity3d.com/540/Documentation/Manual/CommandLineArguments.html
这里写图片描述
这里我简单实现这个静态方法

public class JenkinsAdapter
{
    [MenuItem("Jenkins/JenkinsBuild")]
    public static void Build()
    {
        EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTarget.Android);

        List<string> sceneList = new List<string>();
        EditorBuildSettingsScene[] temp = EditorBuildSettings.scenes;
        for (int i = 0, iMax = temp.Length; i < iMax; ++i)
            sceneList.Add(temp[i].path);

        BuildPipeline.BuildPlayer(sceneList.ToArray(), "./android.apk", BuildTarget.Android, BuildOptions.None);
    }
}

在命令中增加了选项-logFile build.log以查看失败原因。

H:\Unity3d492\Editor\Unity.exe -projectPath D:\Test\workspace -executeMethod JenkinsAdapter.Build -quit -batchmode -logFile build.log

将上面脚本的Unity安装和工程路径,抽离出来。编写到脚本文件build.bat,存放到工程根目录下。

%1 -projectPath %2 -executeMethod JenkinsAdapter.Build -quit -batchmode -logFile build.log

这里写图片描述
注意:保存以上操作。并提交到代码仓库。
下面将介绍使用Jenkins。


安装Jenkins

配置Jenkins极为简单,安装即可用,无需要再进行配置。官网下载https://jenkins.io/index.html安装结束后,浏览器打开地址http://127.0.0.1:8080/显示Jenkins平台主页
这里写图片描述

新建Jenkins Job

  1. 点击进行,创建一个新任务
    这里写图片描述
  2. 创建一个自由风格的项目,项目名称为Test
    这里写图片描述
  3. 填写代码仓库地址。此处以使用代码管理SVN为例。注意选择更新策略
    我建议使用use ‘svn update’ as much as possible, with ‘svn revert’ before update。因为代码可能会出现冲突导致打包失败。(务必禁止在Jekins打包机上对checkout下来的代码进行修改)
    这里写图片描述
  4. 选择执行脚本命令。这里以window的bat命令为例。
    这里写图片描述
  5. 编写命令build.bat "H:\Unity3d492\Editor\Unity.exe" "%WORKSPACE%"变量%WORKSPACE%指向代码仓库的checkout目录,build.bat的执行目录同样也为%WORKSPACE%
    这里写图片描述
  6. 保存退出。
  7. 大功告成。立即进行一次构建。
    这里写图片描述

常见打包失败原因

  1. 未在Edit-Perfences配置Android sdk路径
  2. Androiod API版本低于Unity3d运行版本要求。
  3. 未在PlayerSettings配置包名和应用名
  4. 代码冲突。
  5. Unity3d不是Pro版本
  6. Jekins默认使用访客账号登录,会缺少执行安全权限,导致启动Unity3d时失败。错误信息“Validating Project structure … 0.000224 seconds. Refresh: detecting if any”。你需要在Jenkins启动服务属性中,指定登录账号。
    这里写图片描述
    这里写图片描述
1
0
查看评论

Unity3d+Jenkins 自动编译iOS、Android版本

1、在Unity3d中, 创建导出 iOS、Android 项目脚本 PerformBuild.cs ,放在Editor目录下(必须),如下: using UnityEditor; using System.IO; using System.Collection...
  • lly20000
  • lly20000
  • 2015-05-04 11:45
  • 3466

Unity3d使用Jenkins打包Android

1.Jenkins介绍 jenkins是一个广泛用于持续构建的可视化web工具,持续构建说得更直白点,就是各种项目的"自动化"编译、打包、分发部署。jenkins可以很好的支持各种语言(比如:java, c#, php等)的项目构建,也完全兼容ant、maven、gradle...
  • qq283818296
  • qq283818296
  • 2017-05-02 12:29
  • 389

Unity-jenkins持续集成--配置

General General中最重要的配置就是关于slave机器的配置 slave机器的配置选项为:Restrict where this project can be run,勾选上,并且配置slave机器的名字 源码管理 jenkins支持多种版本控制软件,SVN和GIT 支持多个仓库 git...
  • lingyanpi
  • lingyanpi
  • 2017-08-21 15:09
  • 533

Jenkins 打包Unity APK

Jenkins 打包Unity APK新建一个Unity 工程,添加编辑器打包脚本编辑器脚本 APKBuild.cs 编辑状态下调用 APKBuild中 Build 方法,执行打包, 测试成功开始编写 批处理脚本 Unity.bat 通过批处理脚本调用 APKBuild中 Build 方...
  • LIQIANGEASTSUN
  • LIQIANGEASTSUN
  • 2017-12-21 20:11
  • 128

Unity3D研究院之Jenkins的使用

长夜漫漫无心睡眠,来一篇嘿嘿。我相信如果已经用Shell脚本完成IOS和Android打包的朋友一定需要Jenkins 怎么才能让策划打包ipa和apk?怎么才能彻底省去程序的时间,只要在同一局域网内不需要unity的开发环境,只要它有浏览器,它就能打包Jenkins无疑是最佳选择。 Unity...
  • oSKyTonight
  • oSKyTonight
  • 2017-07-07 11:04
  • 624

Windows平台下使用Jenkins自动发布Unity之Android程序与补丁

一、安装Jenkins 官方地址:jenkins-ci.org 一步步安装完毕后,启动Jenkins 二、安装Jenkins Unity插件 插件下载地址:http://updates.jenkins-ci.org/download/plugins/ 选择Unity3d-plu...
  • u011355822
  • u011355822
  • 2015-10-13 15:01
  • 1184

Unityd3d:用jenkins 自动构建Unity-android打包成apk

jenkins+unity+android的文章参考http://www.cnblogs.com/yinghuochong/archive/2013/09/01/3294940.html 遇到问题:unity.exe 运行总是返回1.我觉得应该是就没有启动吧。 用了UnityEditor plugi...
  • yanchezuo
  • yanchezuo
  • 2014-02-11 16:32
  • 1882

在mac上构建Jenkins+unity3d+xcode发布流程

随着游戏的渠道越来越多,发包成为一件耗时耗力的事情,使用jenkins,结合unity3d,xcode等插件可以使这件事情简单并可持续。我们的流程大体是使用unity相关脚本导出xcodeproj,然后使用xcrun等命名打出ipa包,并放在公司的ftp服务器上。知道了思路下面我就来配置下相关的参数...
  • RazerTang
  • RazerTang
  • 2015-07-08 21:31
  • 2313

Jenkins + Unity + Android构建基于Unity的自动编译环境

1. 安装Jenkins 2. 安装Unity 3. an
  • honemleysm
  • honemleysm
  • 2014-10-20 21:45
  • 2601

Win7使用jenkins一键打包unity工程的apk包

环境:win7 一、写unity打包脚本 网上那些教程都太复杂了,又是build.xml又是properties文件什么的,一点都不适合菜鸟上手 新建一个txt文件,添加以下代码: using UnityEditor; class MyEditorScript {     &...
  • u011583025
  • u011583025
  • 2015-09-30 11:02
  • 1736
    个人资料
    • 访问:65851次
    • 积分:600
    • 等级:
    • 排名:千里之外
    • 原创:15篇
    • 转载:0篇
    • 译文:1篇
    • 评论:16条
    文章分类
    最新评论