【Unity/iOS】ビルド完了後にXcodeの設定を変更

iOSへビルドするとXcodeのプロジェクトが書き出されますが、 TeamIDやCapabilityなどを設定するためには、Xcodeの設定を変更できる PBXProjectを使用します。

設定

TeamID

https://developer.apple.com/account/#/overview/AAAAAAAAAAの最後の部分がTeamIDになります。

pbxProject.SetTeamId (targetGuid, "AAAAAAAAAA");

Capability

Push通知などのON/OFF設定ができます。

pbxProject.AddCapability (targetGuid, PBXCapabilityType.XXX);

CompileFlags

ARC設定を変更するなどできます。

var flag = "-fno-objc-arc";
var sourcePath = "Libraries/Plugins/iOS/XXX.mm";
var guid = pbxProject.FindFileGuidByProjectPath (sourcePath);
var flags = pbxProject.GetCompileFlagsForFile (targetGuid, guid);
flags.Add (flag);
pbxProject.SetCompileFlagsForFile (targetGuid, guid, flags);

Framework

Frameworkを追加できます。

pbxProject.AddFrameworkToProject (targetGuid, "XXX.framework", true);

実行

using UnityEditor;
using UnityEditor.Callbacks;
using UnityEditor.iOS.Xcode;
public class XcodeSettingsPostProcesser{
[PostProcessBuildAttribute (0)]
    public static void OnPostprocessBuild (BuildTarget buildTarget, string pathToBuiltProject){
        if (buildTarget != BuildTarget.iOS) return; 

        var projectPath = PBXProject.GetPBXProjectPath(pathToBuiltProject);
        PBXProject pbxProject = new PBXProject ();
        pbxProject.ReadFromFile (projectPath);

        var targetGuid = pbxProject.TargetGuidByName ("Unity-iPhone"),

        //各種設定

        File.WriteAllText (projectPath, pbxProject.WriteToString ());
    }
}

参考