Unity 打包IOS(自动化构建)

打包流程

  • unity导出xcode工程
  • xcode 生成 archive包
  • 生成ipa包

自动化构建

Jenkins 第三方开源工具

通过batshell执行python脚本

unity editor 代码设置 xcode 引用

 #if !UNITY_ANDROID
    using UnityEditor;
    using UnityEditor.Callbacks;
    using UnityEditor.iOS.Xcode;

    /// 
    /// The post processor for xcode.
    /// 
    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 证书
  
  
  
  
    compileBitcode  
      
    method  
    ad-hoc  
    provisioningProfiles  
      
        YOUR BUNDLEID  
        YOUR PROVISIONINGPROFILE 
      
  
 

备注:

  • 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

https://blog.csdn.net/jim7424994/article/details/22675759

你可能感兴趣的:(Unity 打包IOS(自动化构建))