打包流程:
- unity導(dǎo)出xcode工程
- xcode 生成 archive包
- 生成ipa包
自動(dòng)化構(gòu)建
Jenkins 第三方開(kāi)源工具
通過(guò)bat
劳吠、shell
執(zhí)行python
腳本
unity editor 代碼設(shè)置 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:編譯項(xiàng)目名稱
#-scheme TestAutoPacking:scheme名稱(一般會(huì)與你的項(xiàng)目名稱相同)
#-configuration Release:(Debug/Release)
xcodebuild clean -project ${native_ios_project}/${native_project_name}/${native_project_name}.xcodeproj -scheme ${native_project_name} -configuration Release
#archive導(dǎo)出.xcarchive文件
#-project TestAutoPacking.xcodeproj:同clean步驟中一樣
#-scheme TestAutoPacking:同clean步驟中一樣
#-archivePath /dandy/xmeAutoArchive/TestAutoPacking.xcarchive:導(dǎo)出.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:剛剛導(dǎo)出的.xcarchive文件的目錄
#-exportPath /dandy/xmeAutoArchive/TestAutoPacking:將要導(dǎo)出的ipa文件的目錄以及文件名
xcodebuild -exportArchive -archivePath ${output_path}/${native_project_name}.xcarchive -exportPath ${output_path} -exportOptionsPlist ${tool_path}/exportOptions.plist
exportOptions.plist:
-
YOUR BUNDLEID
包名 -
YOUR PROVISIONINGPROFILE
證書(shū)
<?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實(shí)時(shí)查看python腳本日志
python -u test.py
-
Unity命令行日志實(shí)時(shí)輸出
mac肮蛹、linx下-logfile /dev/stdout
windows下需要在python中進(jìn)行處理
- 退出UnityEditor腳本執(zhí)行并返結(jié)果
EditorApplication.Exit(0)
jenkins
python
讀取文件 報(bào)編碼錯(cuò)誤
UnicodeEncodeError: ‘gbk’ codec can't encode character '\ufffd' in position