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

问题描述

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

这是我尝试构建时遇到的错误

enter image description here

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,Boolean&) (at /Users/bokken/buildslave/unity/build/Modules/IMGUI/GUIUtility.cs:189)

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

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

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

添加的“添加plist内容”的调试行也从未在控制台中显示,所以也许此脚本无法正常工作?

解决方法

好的,所以我来看看构建设置。我一直在寻找是否可以在构建之前设置自定义info.plist文件,例如为Android设置自定义maintemplate.gradle。

我发现了...

enter image description here

看起来他们是最近随机添加的。 谢谢团结!