Unity Cloud Buildは便利なんだけどビルド通すまでがしんどいよね。
今日出たエラーのお話。
環境
- 書いた日 2016/09/03
- OS X El Capitan 10.11.6
- Unity Cloud Build
- Unity 5.4.0f3
- Xcode 7
CloudBuildフルログ(抜粋
8424: [xcode] ld: object contains invalid bitcode: /BUILD_PATH/hogehoge.default-ios/temp.n9diN5/build/Unity-iPhone.build/Release-iphoneos/Unity-iPhone.build/Objects-normal/armv7/hogehoge.bundle.t1TsA9/001 for architecture armv7 8425: [xcode] clang: error: linker command failed with exit code 1 (use -v to see invocation)
BITCODE オフにしとけってやつですね。

ローカルのXCodeなら手作業でもいいけどCloudBuildだとそうも行かないので自動化。
対応
下記ファイルを配置。
場所は Editor/PostBuildProcess.cs とか。Editorの下ならOK。
using UnityEngine;
using UnityEditor;
using UnityEditor.Callbacks;
using UnityEditor.iOS.Xcode;
using System.Collections;
using System.IO;
public class PostBuildProcess
{
[PostProcessBuild]
public static void OnPostProcessBuild (BuildTarget buildTarget, string path)
{
if (buildTarget == BuildTarget.iOS) {
ProcessForiOS (path);
}
}
private static void ProcessForiOS (string path)
{
string pjPath = PBXProject.GetPBXProjectPath (path);
PBXProject pj = new PBXProject ();
pj.ReadFromString (File.ReadAllText (pjPath));
string target = pj.TargetGuidByName ("Unity-iPhone");
// Enable BitCode -> NO
pj.SetBuildProperty (target, "ENABLE_BITCODE", "NO");
File.WriteAllText (pjPath, pj.WriteToString ());
}
}
これでUnity -> File -> Build And Run したときに勝手にXCodeプロジェクトファイルを編集して設定してくれる。