Unity 2020.1.8f1 由于缺少 plist 键值对而无法构建 xcode 项目

Guy*_*ito 1 xcode info.plist unity-game-engine ios

我们最近将一个项目更新到 Unity 2020.1.8f1 但由于缺少 plist 键值对,它不会构建 iOS 的 xcode 项目。这真的很奇怪,因为之前,我会构建 xcode 项目,然后修复 plist 内容,然后构建到 iOS。

以下是我尝试构建时遇到的错误。

在此输入图像描述

WebCamTexture class is used but Camera Usage Description is empty. App will not work on iOS 10+.
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr, Boolean &)(at / Users / bokken / buildslave / unity / build / Modules / IMGUI / GUIUtility.cs:189)

Microphone class is used but Microphone Usage Description is empty. App will not work on iOS 10+.
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr, Boolean&) (at /Users/bokken/buildslave/unity/build/Modules/IMGUI/GUIUtility.cs:189)
Run Code Online (Sandbox Code Playgroud)

我尝试将此脚本添加到资产中的编辑器文件夹中

    using UnityEngine;
    using UnityEditor;
    using UnityEditor.Callbacks;
    using System.Collections;
    using UnityEditor.iOS.Xcode;
    using System.IO;
     
    public class AddStuffToplist {
     
        [PostProcessBuild]
        public static void ChangeXcodePlist(BuildTarget buildTarget, string pathToBuiltProject)
        {
     
            if (buildTarget == BuildTarget.iOS) {

                Debug.Log("adding plist stuff");
                // Get plist
                string plistPath = pathToBuiltProject + "/Info.plist";
                PlistDocument plist = new PlistDocument();
                plist.ReadFromString(File.ReadAllText(plistPath));
           
                // Get root
                PlistElementDict rootDict = plist.root;

                rootDict.SetString("NSCameraUsageDescription","Natcorder unity asset uses this");
                rootDict.SetString("NSMicrophoneUsageDescription","Natcorder unity asset uses this");
                rootDict.SetString("NSPhotoLibraryUsageDescription","Natcorder unity asset uses this");

                //rootDict.SetString("Privacy - Photo Library Usage Description", "Natcorder unity asset uses this");
                //rootDict.SetString("Privacy - Microphone Usage Description", "Natcorder unity asset uses this");


                // Write to file
                File.WriteAllText(plistPath, plist.WriteToString());
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

例如,如果我使用“隐私 - 麦克风使用描述”或“NSMicrophoneUsageDescription”作为密钥,我会得到完全相同的错误。

另外,我添加的“添加 plist 内容”的调试行永远不会显示在控制台中,所以也许这个脚本不起作用?

Guy*_*ito 5

好的,我查看了构建设置。我想看看是否可以在构建之前设置一个自定义的 info.plist 文件,就像为 Android 设置一个自定义的 maintemplate.gradle 一样。

我发现这个...

在此输入图像描述

看起来他们最近随机添加了这个。感谢团结!