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());
}
}