如何搭建Jenkins导出Unity安卓环境

本文详细介绍如何使用Jenkins配置自动化打包环境,实现Unity项目的快速打包。通过设置批处理文件和Unity编辑器脚本,无需开发环境即可在局域网内进行Android APK的构建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

早早去公司上班,老大经常会叫我出一个demo的包,我就想起来可以配置一个打包工具,让他随时想要一个运行包就可以自己打包看效果,就想起来可以配置一个Jenkins打包环境。这样在同一个局域网内不需要Unity开发环境,就只要浏览器打开Jenkins然后点击打包即可。

准备工具

  • 准备Jenkins环境,可以选择去Jenkins官网下载,我这里准备了一个Jenkins的war包。

搭建步骤

  • 首要前提本地Unity已经安装好Unity Android的打包环境,确保能够正确的用Unity导出Android apk包,这里就不过多介绍Unity如何导出Android环境了,自行解决。
  • 命令行启动Jenkins,java -jar jenkins.war,会看到如下运行即代表启动成功,可以在浏览器输入http://localhost:8080/来测试,会看到进入Jenkins网站。
    在这里插入图片描述
    在这里插入图片描述
  • 构建项目
    在这里插入图片描述
    在这里插入图片描述
    注意windows路径和命令行的路径的转变,上图是Unity打包apk的批处理的路径,这个批处理如下图,并且要放到Unity的工程下。
    在这里插入图片描述
    注意:如果批处理路径中不能带有空格,如果有空格的话可以加上双引号,确保这个批处理能够正确的导出apk,批处理代码如下,并且注意用utf8保存:
@echo off

echo "Start build apk..."
C:\"Program Files"\Unity1748f1\Unity\Editor\Unity.exe -projectPath D:\study\gitoschina\jenkinsTest\HelloUnity -quit -batchmode -executeMethod PerformBuild.CommandLineBuildAndroid -logFile build.log
REM %1 -projectPath %2 -quit -batchmode -executeMethod APKBuild.Build -logFile build.log

if not %errorlevel%==0 ( goto fail ) else ( goto success )

:success
echo Build APK OK
goto end

:fail
echo Build APK Fail
goto end

:end
pause
  • 工程Editor目录下添加自动构建的代码
using UnityEditor;
using System.IO;
using System.Collections;
using UnityEngine;
using System.Collections.Generic;
class PerformBuild
{
    static string[] GetBuildScenes()
    {
        List<string> names = new List<string>();
        foreach (EditorBuildSettingsScene e in EditorBuildSettings.scenes)
        {
            if (e == null)
                continue;
            if (e.enabled)
                names.Add(e.path);
        }
        return names.ToArray();
    }
    static string GetBuildPath()
    {
        string dirPath = Application.dataPath + "/../build/iPhone";
        if (!System.IO.Directory.Exists(dirPath))
        {
            System.IO.Directory.CreateDirectory(dirPath);
        }
        return dirPath;
    }
    [UnityEditor.MenuItem("Tools/PerformBuild/Test Command Line Build iPhone Step")]
    static void CommandLineBuild()
    {
        Debug.Log("Command line build\n------------------\n------------------");
        string[] scenes = GetBuildScenes();
        string path = GetBuildPath();
        if (scenes == null || scenes.Length == 0 || path == null)
            return;
        Debug.Log(string.Format("Path: \"{0}\"", path));
        for (int i = 0; i < scenes.Length; ++i)
        {
            Debug.Log(string.Format("Scene[{0}]: \"{1}\"", i, scenes[i]));
        }
        Debug.Log("Starting Build!");
        BuildPipeline.BuildPlayer(scenes, path, BuildTarget.iOS, BuildOptions.None);
    }
    static string GetBuildPathAndroid()
    {
        string dirPath = Application.dataPath.Replace("/Assets", "") + "/../build/android/"+Application.productName+".apk";
        if (!System.IO.Directory.Exists(dirPath))
        {
            System.IO.Directory.CreateDirectory(dirPath);
        }
        return dirPath;
    }
    [UnityEditor.MenuItem("Tools/PerformBuild/Test Command Line Build Step Android")]
    static void CommandLineBuildAndroid()
    {
        Debug.Log("Command line build android version\n------------------\n------------------");
        string[] scenes = GetBuildScenes();
        string path = GetBuildPathAndroid();
        if (scenes == null || scenes.Length == 0 || path == null)
        {
            Debug.LogError("Please add scene to buildsetting...");
            return;
        }
        Debug.Log(string.Format("Path: \"{0}\"", path));
        for (int i = 0; i < scenes.Length; ++i)
        {
            Debug.Log(string.Format("Scene[{0}]: \"{1}\"", i, scenes[i]));
        }
        Debug.Log("Starting Android Build!");
        BuildPipeline.BuildPlayer(scenes, path, BuildTarget.Android, BuildOptions.None);
    }
}
  • 点击Jenkins构建
    在这里插入图片描述
  • 本地生成apk
    在这里插入图片描述
    更深入的配置可以参考以下链接,更多Jenkins插件和功能可以摸索研究。Mac中导出iOS配置后续添加或者想尝试的朋友参考文末雨凇的文章。

下载链接

参考

后续

如果碰到问题欢迎留言讨论!

更多精品文章

Aladdin的博客

附加

后面还添加了邮件通知的配置也是蛮方便的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值