Unity脚本打包和Jenkins打包

首先我们假设所有的环境和参数都配置好了。

常规打包: 打开Unity -> File -> Building Setting -> 点击 Build 按钮。

脚本打包:不需要打开Unity,通过脚本完成手动点击 Build 按钮的操作。

Jenkins 打包:不需要在部署了工程的电脑上操作, 通过访问 Web 或者 设置自动打包命令来执行打包脚本。

脚本打包 apk

Unity 提供了命令行打包的接口,Mac 上打包安卓脚本如下:

#!/bin/sh

# unity app path
UNITY_PATH=/Applications/Unity/Unity.app/Contents/MacOS/Unity

# project path
PROJ_PATH=/Users/David/Proj/UnityAutoBuild/AutoBuild

echo "============== Unity Build APK Begin =============="

$UNITY_PATH -projectPath $PROJ_PATH -executeMethod Batchmode.BuildAndroid -logFile $PROJ_PATH/android/Android.log -batchMode -quit

echo "============== Unity Build APK Finish =============="

其中,BuildAndroid 是 Batchmode.cs 中的一个静态方法,里面最重要的方法是

foreach (EditorBuildSettingsScene scene in EditorBuildSettings.scenes)
{
    if (!scene.enabled) continue;
    levels.Add(scene.path);
}

string res = BuildPipeline.BuildPlayer(levels.ToArray(), "TestAutoBuild.apk", BuildTarget.Android, BuildOptions.None);

脚本打包 iOS

脚本打包 iOS, 会分成两个步骤:
第一步类似于安卓打包, 但是生成的是 Xcode工程。
第二步是将 Xcode工程打包成 ipa。(个人免费账号无法生成 ipa,需要购买申请开发者账号)

iOS 打包脚本如下:

#!/bin/sh

# unity app path
UNITY_PATH=/Applications/Unity/Unity.app/Contents/MacOS/Unity

# project path
PROJECT_PATH=/Users/David/Workspace/Proj/UnityAutoBuild/AutoBuild

#IOS打包脚本路径#
BUILD_IOS_PATH=${PROJECT_PATH}/iOS/ipa_build.sh

#生成的Xcode工程相对路径#
XCODE_PATH=iOS/XCode

XCODE_TRUE_PATH=${PROJECT_PATH}/${XCODE_PATH}

#生成的ipa的相对路径#
IPA_PATH=ipa

#将unity导出成xcode工程#
echo "============== Unity Build XCode Project Begin =============="
$UNITY_PATH -projectPath $PROJECT_PATH -executeMethod Batchmode.BuildiOS project-$XCODE_PATH -quit
echo "============== Unity Build XCode Project Finish =============="

#开始生成ipa#
echo "============== Unity Build IPA Begin =============="
echo $XCODE_TRUE_PATH
echo $IPA_PATH
echo $BUILD_IOS_PATH

$BUILD_IOS_PATH $XCODE_TRUE_PATH $IPA_PATH
echo "============== Unity Build IPA Finish =============="

ipa_build.sh

#!/bin/sh

# 参数判断  
if [ $# != 2 ];then  
    echo "Need two params: 1.path of project 2.name of ipa file"  
    exit  
elif [ ! -d $1 ];then  
    echo "The first param is not a dictionary."  
    exit      
fi  
# 工程路径  
xcode_project_path=$1  

# IPA名称  
ipa_name=$2  

# build文件夹路径  
build_path=${xcode_project_path}/build  

archive_path=${build_path}/Archive/AutoBuild.xcarchive

# 清理#
xcodebuild clean

# 编译工程  
cd $xcode_project_path  
xcodebuild || exit  

xcodebuild archive \
-project ${xcode_project_path}/Unity-iPhone.xcodeproj \
-scheme Unity-iPhone \
-configuration "Release" \
-archivePath ${archive_path}

xcodebuild -exportArchive \
-exportOptionsPlist ${xcode_project_path}/info.plist \
-archivePath ${archive_path} \
-exportPath ${xcode_project_path}

Jenkins 打包:

一般版本发布只在一台机器上进行,不可能每次打包都去电脑上双击下打包脚本,此时可以使用 Jenkins 构建打包环境。简单说, Jenkins实现了通过Web访问,执行了上文的打包脚本。

Jenkins是一个丰富的图形化构建平台。提供脚本命令工具(bat、shell、perl、python、ant等),代码管理工具(svn cvs等)及账号权限管理等上千个辅助插件。为软件的持续化集成工作流程提供完美支持。

使用Jenkins进行Unity打包的好处:
1. 通过网页执行打包命令,很方便
2. 自动构建打包,比如每天晚上12点打包
3. 打包结果通知可以发送到邮件 QQ群等,因为他有丰富的插件支持

Jenkins官网 https://jenkins.io/, 具体方案此处就不展开了。


如有错误,欢迎指出。

email:dxmdxm1992#gmail.com

blog: http://blog.csdn.net/david_dai_1108

你可能感兴趣的:(Unity)