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

Hi,

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";

    [PostProcessBuild(800)]
    public static void OnPostProcessBuild(BuildTarget target, string pathToBuiltProject)
    {
        if (target != BuildTarget.iOS)
            return;

        var fullProjectPath = pathToBuiltProject + XCODE_PROJ;

        //Get the Xcode project
        var project = new PBXProject();
        project.ReadFromString(File.ReadAllText(fullProjectPath));

        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?

        capabilityManager.WriteToFile();

        //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:
https://forum.unity.com/threads/pbxproject-fails-to-apply-icloud-capabilities-in-2019-4.1032634/