Not able to add iCloud to XCode project via PostProcessing script using the XCodeAPI


I am not able to add the iCloud service to my XCode project by using the XCodeAPI.

I am adding it via a PostProcessBuild in Unity and I AM able to add a lot of other things, such as frameworks etc. I want to have a post process script to help me set up the XCode project, so I don’t need to do it manually.

First, I thought the issue was using the “ProjectCapabilityManager”, but I am able to add other capabilities, such as the GameCenter with no problem.

I have also tried the project.AddCapability(“stuff there”) approach, but that did not work either

I am using Unity 2019.4.1 (LTS) and Xcode 12.1

Here is my PostProcessing script:

public class PostProcessIOS
    const string XCODE_PROJ = "/Unity-iPhone.xcodeproj/project.pbxproj";

    public static void OnPostProcessBuild(BuildTarget target, string pathToBuiltProject)
        if (target != BuildTarget.iOS)

        var fullProjectPath = pathToBuiltProject + XCODE_PROJ;

        //Get the Xcode project
        var project = new PBXProject();

        string targetGuid = project.GetUnityFrameworkTargetGuid();

        project.AddFrameworkToProject(targetGuid, "WebKit.framework", false);
        project.AddFrameworkToProject(targetGuid, "MobileCoreServices.framework", false);

        project.AddBuildProperty(targetGuid, "OTHER_LDFLAGS", "-ObjC");
        project.AddBuildProperty(targetGuid, "ENABLE_BITCODE", "NO");

        var capabilityManager = new ProjectCapabilityManager(fullProjectPath, "Unity-iPhone/mmk.entitlements", "Unity-iPhone");

        capabilityManager.AddGameCenter(); //Works fine
        capabilityManager.AddiCloud(false, true, null); //Why U No Work?


        //Write the changes
        File.WriteAllText(fullProjectPath, project.WriteToString());

Update: A colleague found a solution. It is simple the order of when you write to which file: