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プロジェクトファイルを編集して設定してくれる。