找回密码
 立即注册
查看: 464|回复: 0

[简易教程] 【Unity游戏客户端框架搭建】十、一键生成(jenkins)

[复制链接]
发表于 2021-1-25 09:47 | 显示全部楼层 |阅读模式
前言

unity打包有很多步骤,还有很多注意事项,但是在开发阶段,QA为了测试,一天就要打好几个包,要是一直是客户端人工去打包,那不得浪费一堆人力资源
自动打包应运而生,Jenkins 配合python完美将打包这件事交给QA,所以整个一键打包是非常有必要的,可以节约大家很多的时间。
目录

    Jenkin包教包会Bat文件编写
Jenkins使用篇

1. Jenkins的安装?
下载安装Jenkins,
下载地址在这里:https://jenkins.io/download/
下载后直接解压安装即可
2.Jenkins的部署
    下载安装完,就可以开始我们的一键打包部署了。
添加SSH
添加SSH的方法:在git项目下,右键打开gitbash,输入 ssh-keygen  然后输入文件名,回车,回车,就会在项目文件夹下生成文件名.pub的SSH文件,右键文本编辑器打开,到github仓库内Setting-Deploy keys-Add Key,然后黏贴进我们的SSH文件内容就好了。
配置保存好,一个简单的从GitHub上拉取工程的任务已经好了,构建下任务,也就是执行下我们创建的任务,你会惊喜的发现,github上的工程check下来了,目录在E:\Jenkins\workspace\工程名,就是你安装Jenkins的路径,下面会自动创建工作区间workspace下级目录就是你的任务名称,所有关于本任务的操作都会在这个目录下!
3. 接下来我们来实现脚本自动构建项目。
①添加参数:ProjectPath 项目路径 Game_Name 游戏名称,用来生成apk名字
②添加步骤:执行Batch文件
cd /d %ProjectPath%
BuildWithParameter.bat %Game_Name%Batch脚本编写篇

③编写batch:实现切换目录到指定路径,调用unity打包接口
BuildWithParameter.bat 内容如下
REM UNITY程序的路径
SET UNITY_PATH="C:\Program Files\Unity_5.6.6\Unity\Editor\Unity.exe"

REM 游戏程序路径
SET PROJECT_PATH="E:\Jenkins\workspace\AutoBuild"

REM 在Unity中构建apk
%UNITY_PATH% -projectPath %PROJECT_PATH% -quit -batchmode -executeMethod ProjectBuild.BuildForAndroid %1 -logFile build.log

echo "Apk生成完毕"
PAUSE这个bat文件调用了unity项目的ProjectBuild.cs文件的BuildForAndroid方法
#region Copyright  2018 Aver. All rights reserved.
/*
=====================================================
AverFrameWork v1.0
Filename:    ProjectBuild.cs
Author:      Zeng Zhiwei
Time:        2019/10/23 16:57:35
=====================================================
*/
#endregion

using System.Collections.Generic;
using UnityEditor;
using UnityEngine;

class ProjectBuild
{
    //在这里找出你当前工程所有的场景文件,假设你只想把部分的scene文件打包 那么这里可以写你的条件判断 总之返回一个字符串数组。
    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 void BuildForAndroid()
    {
        //todo 每次build删除之前的残留
        BuildTarget target = EditorUserBuildSettings.activeBuildTarget;
        BuildTargetGroup targetGroup = BuildTargetGroup.Android;
        // 切换到对应平台
        EditorUserBuildSettings.SwitchActiveBuildTarget(targetGroup,target);

        string path = Application.dataPath + "/" + "test"+ ".apk";
        BuildOptions options = BuildOptions.AcceptExternalModificationsToPlayer;
        // 生成Android APK
        EditorUserBuildSettings.androidBuildSubtarget = MobileTextureSubtarget.ETC;
        EditorUserBuildSettings.androidBuildSystem = AndroidBuildSystem.Gradle;

        options |= BuildOptions.CompressWithLz4;
        BuildPipeline.BuildPlayer(GetBuildScenes(), path, target, options);
        Debug.LogFormat("----EndBuildAndroid---------- outputpath:{0}", path);
    }
}
注意

    在整这些之前,记得先打开unity,手动build一个包,有console的日志,调试起来比较方便,会有蛮多坑的,有SDK和NDK版本问题、Android Support等等。在手动能打出包后,再开始自动打包!!!
参考

Unity3D研究院之IOS全自动编辑framework、plist、oc代码(六十七) | 雨松MOMO程序研究院
Unity3D研究院之Android全自动打包生成apk(六十九) | 雨松MOMO程序研究院
Unity3D研究院之IOS全自动打包生成ipa(六十八) | 雨松MOMO程序研究院

本帖子中包含更多资源

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

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-5-29 16:08 , Processed in 0.124410 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表