首先我们假设所有的环境和参数都配置好了。
常规打包: 打开Unity -> File -> Building Setting -> 点击 Build 按钮。
脚本打包:不需要打开Unity,通过脚本完成手动点击 Build 按钮的操作。
Jenkins 打包:不需要在部署了工程的电脑上操作, 通过访问 Web 或者 设置自动打包命令来执行打包脚本。
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, 会分成两个步骤:
第一步类似于安卓打包, 但是生成的是 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实现了通过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