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

Posted

技术标签:

【中文标题】Unity 2020.1.8f1 无法构建 xcode 项目,因为缺少 plist 键值对【英文标题】:Unity 2020.1.8f1 cannot build xcode project because of missing plist key value pairs 【发布时间】:2020-10-24 15:30:09 【问题描述】:

我们最近将一个项目更新到 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)

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

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

如果我使用 Privacy - Microphone Usage Description 或 NSMicrophoneUsageDescription 作为键,我会得到完全相同的错误。

此外,我添加的“添加 plist 内容”的调试行从未出现在控制台中,所以也许这个脚本不起作用?

【问题讨论】:

这些错误信息非常准确 - 是什么让您无法将这些键添加到 plist 文件中?从代码中执行此操作为时已晚。 plist 文件是我正在尝试构建的 xcode 项目的一部分。 但是你是在之后构建的,对吧 ([PostProcessBuild]) 吗?尝试在编译器运行之前进行更改。 gereon,只是想知道?你熟悉 Unity 吗? 【参考方案1】:

好的,所以我查看了构建设置。我想看看是否可以在构建之前设置自定义 info.plist 文件,例如为 android 设置自定义 maintemplate.gradle ..

我发现了这个...

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

【讨论】:

以上是关于Unity 2020.1.8f1 无法构建 xcode 项目,因为缺少 plist 键值对的主要内容,如果未能解决你的问题,请参考以下文章

Iphone 6 plus Simulator 工作正常,设备除外

Unity 2018.1.3f1 UI 闪烁问题

关于Unity5.1.2f1的IL2CPP异步Socket无法连接问题,求助!!!

解决Unity 2017.3.f1 在win10上无法启动的问题, 0xc000007b错误

如何使用Unity 2017.3.1f1和Visual Studio 2017更新脚本?

unity2017.4.0f1使用AS3.0的AndroidSDK遇到的问题