一、 获取 PBXProject PBXProject的很多操作都是通过guid的

var pbxProject = new PBXProject();

二 、获取projectPath

var projectPath = PBXProject.GetPBXProjectPath(iosProjectPath);

三 、读取pbxProject 文件

pbxProject.ReadFromFile(projectPath);

四 、 读取Unity-iPhone"对应的target和UnityFramework

GetUnityMainTargetGuid是获取XCode工程中"Unity-iPhone"对应的target,GetUnityFrameworkTargetGuid则对应"UnityFramework"

var mainTargetGuid = pbxProject.GetUnityMainTargetGuid();//

//这个对应target中的Unity-iPhone

var frameworkTargetGuid = pbxProject.GetUnityFrameworkTargetGuid();//

//这个对应target中UnityFramework

五 、添加

pbxProject.AddBuildProperty(mainTargetGuid, "OTHER_LDFLAGS", "-ObjC");

pbxProject.AddBuildProperty(frameworkTargetGuid, "OTHER_LDFLAGS", "-ObjC");

pbxProject.SetTeamId(mainTargetGuid, "");

pbxProject.SetTeamId(frameworkTargetGuid, "");

pbxProject.SetBuildProperty(mainTargetGuid, "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES", "YES");

pbxProject.SetBuildProperty(frameworkTargetGuid, "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES", "NO");

pbxProject.SetBuildProperty(mainTargetGuid, "GCC_ENABLE_OBJC_EXCEPTIONS", "YES");

pbxProject.SetBuildProperty(frameworkTargetGuid, "GCC_ENABLE_OBJC_EXCEPTIONS", "YES");

pbxProject.SetBuildProperty(mainTargetGuid, "GCC_C_LANGUAGE_STANDARD", "gnu11");

pbxProject.SetBuildProperty(frameworkTargetGuid, "GCC_C_LANGUAGE_STANDARD", "gnu11");

pbxProject.AddFrameworkToProject(frameworkTargetGuid, "Photos.framework", false);

// info.plist 设置

var plistPath = Path.Combine(iosProjectPath, "Info.plist");

var plist = new PlistDocument();

plist.ReadFromString(File.ReadAllText(plistPath, Encoding.ASCII));

plist.root.values.Add("NSPhotoLibraryUsageDescription", new PlistElementString("We will use this permission if the child sends lessons and feedback through the album."));

plist.root.values.Add("ITSAppUsesNonExemptEncryption", new PlistElementBoolean(false));

AddPlistElementDict(plist,"NSAppTransportSecurity","NSAllowsArbitraryLoads",new PlistElementBoolean(true));

六、操作完后要写回文件,否则无效

File.WriteAllText(plistPath, plist.WriteToString());

七 、总结

string pbxProjectPath = PBXProject.GetPBXProjectPath(path);

pbxProject = new PBXProject();

pbxProject.ReadFromString(File.ReadAllText(pbxProjectPath));

mainTarget = pbxProject.GetUnityMainTargetGuid();//这个对应target中的Unity-iPhone

frameworkTarget = pbxProject.GetUnityFrameworkTargetGuid();//这个对应target中UnityFramework

//...

//你的操作

//...

     pbxProject.WriteToFile(pbxProjectPath);  //操作完后要写回文件,否则无效

相关链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。