打包流程:
- unity导出xcode工程
- xcode 生成 archive包
- 生成ipa包
自动化构建
Jenkins 第三方开源工具
通过bat
、shell
执行python
脚本
unity editor 代码设置 xcode 引用
#if !UNITY_ANDROID
using UnityEditor;
using UnityEditor.Callbacks;
using UnityEditor.iOS.Xcode;
/// <summary>
/// The post processor for xcode.
/// </summary>
internal static class XCodePostProcess
{
[PostProcessBuild(700)]
public static void OnPostProcessBuild(
BuildTarget target, string pathToBuiltProject)
{
if (target != BuildTarget.iOS)
{
return;
}
var projPath = pathToBuiltProject + "/Unity-iPhone.xcodeproj/project.pbxproj";
var proj = new PBXProject();
proj.ReadFromFile(projPath);
var targetGUID = proj.TargetGuidByName("Unity-iPhone");
proj.SetBuildProperty(targetGUID, "ENABLE_BITCODE", "NO");
proj.AddBuildProperty(targetGUID, "OTHER_LDFLAGS", "-ObjC");
proj.AddFrameworkToProject(targetGUID, "libresolv.9.tbd", false);
proj.AddFrameworkToProject(targetGUID, "WebKit.framework", false);
proj.WriteToFile(projPath);
}
}
#endif
unity 命令行
/Applications/Unity/Unity.app/Contents/MacOS/Unity -batchmode -quit -projectPath ~/UnityProjectPath -nographics -executeMethod GameEditor.BuildApp -logFile ~/UnityProjectPath/__kellylog.txt
Xcode 命令行
tool_path=$(cd "$(dirname "$0")"; pwd)
native_project_name=Unity-iPhone
output_path=${tool_path}/output
native_ios_project=${output_path}/${native_project_name}/ios
#clean一下工程
#-project TestAutoPacking.xcodeproj:编译项目名称
#-scheme TestAutoPacking:scheme名称(一般会与你的项目名称相同)
#-configuration Release:(Debug/Release)
xcodebuild clean -project ${native_ios_project}/${native_project_name}/${native_project_name}.xcodeproj -scheme ${native_project_name} -configuration Release
#archive导出.xcarchive文件
#-project TestAutoPacking.xcodeproj:同clean步骤中一样
#-scheme TestAutoPacking:同clean步骤中一样
#-archivePath /dandy/xmeAutoArchive/TestAutoPacking.xcarchive:导出.xcarchive文件的目录以及文件名称
#PROVISIONING_PROFILE=${provisionName}
xcodebuild archive -project ${native_ios_project}/${native_project_name}/${native_project_name}.xcodeproj -configuration Release -scheme ${native_project_name} -archivePath ${output_path}/${native_project_name}.xcarchive
#生成ipa
#-archivePath /dandy/xmeAutoArchive/TestAutoPacking.xcarchive:刚刚导出的.xcarchive文件的目录
#-exportPath /dandy/xmeAutoArchive/TestAutoPacking:将要导出的ipa文件的目录以及文件名
xcodebuild -exportArchive -archivePath ${output_path}/${native_project_name}.xcarchive -exportPath ${output_path} -exportOptionsPlist ${tool_path}/exportOptions.plist
exportOptions.plist:
-
YOUR BUNDLEID
包名 -
YOUR PROVISIONINGPROFILE
证书
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>compileBitcode</key>
<false/>
<key>method</key>
<string>ad-hoc</string>
<key>provisioningProfiles</key>
<dict>
<key>YOUR BUNDLEID</key>
<string>YOUR PROVISIONINGPROFILE</string>
</dict>
</dict>
</plist>
备注:
- jenkins实时查看python脚本日志
python -u test.py
-
Unity命令行日志实时输出
mac、linx下-logfile /dev/stdout
windows下需要在python中进行处理
- 退出UnityEditor脚本执行并返结果
EditorApplication.Exit(0)
jenkins
python
读取文件 报编码错误
UnicodeEncodeError: ‘gbk’ codec can't encode character '\ufffd' in position