查看: 111|回复: 0

[简易教程] 不看必后悔系列:十分钟教你搭建Jenkins导出Unity安卓环境教程

[复制链接]

696

主题

76

听众

7614

积分

头头

Rank: 12Rank: 12Rank: 12

发表于 2021-1-13 18:01 |显示全部楼层
前言

想配置一个不同的打包工具,那种可以随时想要一个运行包就可以自己打包看效果,这就要用到本篇给大家分享的搭建Jenkins打包导出Unity安卓环境的教程。
准备工具
准备Jenkins环境,可以选择去Jenkins官网下载,我这里准备了一个Jenkins的war包。
搭建步骤
首要前提本地Unity已经安装好UnityAndroid的打包环境,确保能够正确的用Unity导出Androidapk包,这里就不过多介绍Unity如何导出Android环境了,自行解决。
命令行启动Jenkins,java-jarjenkins.war,会看到如下运行即代表启动成功,可以在浏览器输入http://localhost:8080/来测试,会看到进入Jenkins网站。








构建项目








注意windows路径和命令行的路径的转变,上图是Unity打包apk的批处理的路径,这个批处理如下图,并且要放到Unity的工程下。




注意:如果批处理路径中不能带有空格,如果有空格的话可以加上双引号,确保这个批处理能够正确的导出apk,批处理代码如下,并且注意用utf8保存:
  1. @echo off
  2. echo "Start build apk..."
  3. C:\"Program Files"\Unity1748f1\Unity\Editor\Unity.exe -projectPath D:\study\gitoschina\jenkinsTest\HelloUnity -quit -batchmode -executeMethod PerformBuild.CommandLineBuildAndroid -logFile build.log
  4. REM %1 -projectPath %2 -quit -batchmode -executeMethod APKBuild.Build -logFile build.log
  5. if not %errorlevel%==0 ( goto fail ) else ( goto success )
  6. :success
  7. echo Build APK OK
  8. goto end
  9. :fail
  10. echo Build APK Fail
  11. goto end
  12. :end
  13. pause
复制代码
工程Editor目录下添加自动构建代码:
  1. using UnityEditor;
  2. using System.IO;
  3. using System.Collections;
  4. using UnityEngine;
  5. using System.Collections.Generic;
  6. class PerformBuild
  7.     static string[] GetBuildScenes()
  8.     {
  9.         List<string> names = new List<string>();
  10.         foreach (EditorBuildSettingsScene e in EditorBuildSettings.scenes)
  11.         {
  12.             if (e == null)
  13.                 continue;
  14.             if (e.enabled)
  15.                 names.Add(e.path);
  16.         }
  17.         return names.ToArray();
  18.     }
  19.     static string GetBuildPath()
  20.     {
  21.         string dirPath = Application.dataPath + "/../build/iPhone";
  22.         if (!System.IO.Directory.Exists(dirPath))
  23.         {
  24.             System.IO.Directory.CreateDirectory(dirPath);
  25.         }
  26.         return dirPath;
  27.     }
  28.     [UnityEditor.MenuItem("Tools/PerformBuild/Test Command Line Build iPhone Step")]
  29.     static void CommandLineBuild()
  30.     {
  31.         Debug.Log("Command line build\n------------------\n------------------");
  32.         string[] scenes = GetBuildScenes();
  33.         string path = GetBuildPath();
  34.         if (scenes == null || scenes.Length == 0 || path == null)
  35.             return;
  36.         Debug.Log(string.Format("Path: \"{0}\"", path));
  37.         for (int i = 0; i < scenes.Length; ++i)
  38.         {
  39.             Debug.Log(string.Format("Scene[{0}]: \"{1}\"", i, scenes[i]));
  40.         }
  41.         Debug.Log("Starting Build!");
  42.         BuildPipeline.BuildPlayer(scenes, path, BuildTarget.iOS, BuildOptions.None);
  43.     }
  44.     static string GetBuildPathAndroid()
  45.     {
  46.         string dirPath = Application.dataPath.Replace("/Assets", "") + "/../build/android/"+Application.productName+".apk";
  47.         if (!System.IO.Directory.Exists(dirPath))
  48.         {
  49.             System.IO.Directory.CreateDirectory(dirPath);
  50.         }
  51.         return dirPath;
  52.     }
  53.     [UnityEditor.MenuItem("Tools/PerformBuild/Test Command Line Build Step Android")]
  54.     static void CommandLineBuildAndroid()
  55.     {
  56.         Debug.Log("Command line build android version\n------------------\n------------------");
  57.         string[] scenes = GetBuildScenes();
  58.         string path = GetBuildPathAndroid();
  59.         if (scenes == null || scenes.Length == 0 || path == null)
  60.         {
  61.             Debug.LogError("Please add scene to buildsetting...");
  62.             return;
  63.         }
  64.         Debug.Log(string.Format("Path: \"{0}\"", path));
  65.         for (int i = 0; i < scenes.Length; ++i)
  66.         {
  67.             Debug.Log(string.Format("Scene[{0}]: \"{1}\"", i, scenes[i]));
  68.         }
  69.         Debug.Log("Starting Android Build!");
  70.         BuildPipeline.BuildPlayer(scenes, path, BuildTarget.Android, BuildOptions.None);
  71.     }
复制代码
点击Jenkins构建




本地生成apk




以上就是搭建Jenkins打包导出Unity安卓环境的全部内容,希望能对大家有所帮助。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

楼主热帖
人人为我 我为人人 互相分享 互相学习 互相进步 一带一路
温馨提示:求助请到“Unity技术讨论”版块中发帖,便于集中解决!
您需要登录后才可以回帖 登录 | 立即注册

Unity3D开发中国社区 -Unity3D,Unreal ( 粤ICP备20003399号 )

GMT+8, 2021-1-16 04:06 , Processed in 0.105729 second(s), 37 queries .