Unity和iOS 原生专题一 unity打包设置C#设置 Xcode添加OTHER_LDFLAGS和Info.plist设置

一、 获取 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);  //操作完后要写回文件,否则无效

相关推荐

  1. unity专题(1)背景图片的设置

    2024-04-27 06:10:06       20 阅读
  2. 设置火狐浏览器打开unity开发的webGL

    2024-04-27 06:10:06       21 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-27 06:10:06       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-27 06:10:06       20 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-27 06:10:06       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-27 06:10:06       20 阅读

热门阅读

  1. Python Web开发框架详解:Django与Flask的比较与实践

    2024-04-27 06:10:06       19 阅读
  2. 回归与聚类——模型保存与加载(五)

    2024-04-27 06:10:06       13 阅读
  3. 基于Hadoop的电商数据分析系统设计与实现

    2024-04-27 06:10:06       12 阅读
  4. .NET 面向对象程序设计 —— 设计模式 详细版

    2024-04-27 06:10:06       12 阅读
  5. 等保测评—华为设备核查命令

    2024-04-27 06:10:06       19 阅读
  6. Servlet、Tomcat、Control区别

    2024-04-27 06:10:06       12 阅读