当前位置: 首页 > article >正文

Unity 导出 xcode 工程 并给 Info.plist 文件添加字段

Unity 导出 xcode 工程 并给 Info.plist 文件添加字段

在 Editor 文件夹下新建 xxx.cs 脚本
实现静态方法

    [PostProcessBuild]
    public static void OnPostprocessBuild(BuildTarget target, string pathToBuiltProject)
    {
        // Unity 导出 Xcode 工程自动调用这个方法 
    }

例子 一

using UnityEngine;
using System.IO;
using UnityEditor;
using UnityEditor.Callbacks;
using UnityEditor.iOS.Xcode;

public class AFUpdatePlist
{
    // 在导出 xcode 工程后调用此方法
    [PostProcessBuild]
    public static void OnPostprocessBuild(BuildTarget target, string pathToBuiltProject)
    {
        if (target == BuildTarget.iOS)
        {
            // pathToBuiltProject 是导出的 xcode 工程目录
            // 拼接 Info.plist 文件目录
            string plistPath = pathToBuiltProject + "/Info.plist";
            // 使用 Unity 提供的 plist 文件读取工具解析文件
            PlistDocument plist = new PlistDocument();
            plist.ReadFromString(File.ReadAllText(plistPath));

            // 获取根节点
            PlistElementDict rootDict = plist.root;
            // 设置一个 bool 类型的键值对
            rootDict.SetBoolean("AppsFlyerShouldSwizzle", true);
            // 设置一个字符串类型的键值对
            rootDict.SetString("NSAdvertisingAttributionReportEndpoint", "https://appsflyer-skadnetwork.com/");
            // 修改完毕,将内容写入到文件
            File.WriteAllText(plistPath, plist.WriteToString());
            Debug.Log("Info.plist updated with AppsFlyerShouldSwizzle");
        }

    }
}

例子 二

using UnityEngine;
using System.IO;
using UnityEditor;
using UnityEditor.Callbacks;
using UnityEditor.iOS.Xcode;

public class ModifyIOSInfoPlist : Editor
{
    [PostProcessBuild]
    public static void OnPostprocessBuild(BuildTarget target, string pathToBuiltProject)
    {
        Debug.Log("ModifyIOSInfoPlist");
        if (target == BuildTarget.iOS)
        {
            Debug.Log("ModifyIOSInfoPlist Info.plist");
            string plistPath = pathToBuiltProject + "/Info.plist";
            PlistDocument plist = new PlistDocument();
            //plist.ReadFromString(File.ReadAllText(plistPath));
            plist.ReadFromFile(plistPath);

            PlistElementDict rootDict = plist.root;
            rootDict.SetString("LSMinimumSystemVersion", "13.0");
            File.WriteAllText(plistPath, plist.WriteToString());
            Debug.Log("Info.plist updated with LSMinimumSystemVersion");
        }

    }
}

http://www.kler.cn/a/411872.html

相关文章:

  • 架构-微服务架构
  • <项目代码>YOLOv8 航拍行人识别<目标检测>
  • GCP Dataproc有什么特点,有什么最佳实践
  • 【Python爬虫实战】深入解析 Scrapy:从阻塞与非阻塞到高效爬取的实战指南
  • 【PX4_Autopolite飞控源码】中飞控板初始化过程中的引脚IO控制(拉低/拉高)
  • 力扣hot100-->排序
  • 【Linux】Linux 内存管理机制
  • uniapp+vue2+uview2.0导航栏组件二次封装
  • [Error]无法打开源文件“graphics.h”
  • Python设计模式详解之14 —— 命令模式
  • 【41-50期】Java核心面试问题深度解析:从数据库优化到并发场景解决方案
  • 新版国标GB28181设备端EasyGBD支持GB28181-2016GB28181-2022支持ARM IPC以及Android安卓移动设备
  • 【Python爬虫五十个小案例】爬取猫眼电影Top100
  • 医疗数据质量安全,数据安全解决方案,医院关心的数据安全问题,信息安全方案(Word原件)
  • 深度学习入门- 梯度(Gradient)(三)
  • RabbitMQ 安装延迟队列插件 rabbitmq_delayed_message_exchange
  • 华为Mate 70系列发布,揭示AI+消费电子产业化新阶段
  • scrapy框架学习
  • laravel中队列使用
  • 基于FPGA的信号DM编解码实现,包含testbench和matlab对比仿真
  • linux运行vue编译后的项目
  • ensp静态路由实验
  • CTF-RE 从0到N:c语言是如何利用逻辑运算符拆分变量和合并的
  • LeetCode数组题
  • C# Http Post 长连接和短连接请求
  • 【jvm】对象的内存布局