Xcode中缺少C ++命令行工具应用程序的info.plist文件

时间:2019-04-04 14:48:02

标签: c++ xcode macos-high-sierra info.plist command-line-tool

我想用opencv创建用于大学课程的相机校准应用程序。我已经在macOS High Sierra上创建了命令行工具应用程序。不幸的是,它没有info.plist文件。我的应用程序崩溃并显示以下错误消息:

  

CameraCalibration [2314:193066] [访问]该应用程序已崩溃,因为它尝试访问不使用用法说明的隐私敏感数据。应用程序的Info.plist必须包含NSCameraUsageDescription键,该键具有字符串值,该字符串值向用户说明应用程序如何使用此数据。   程序以退出代码结束:9

我已经尝试添加info.plist文件并在应用程序的“常规”标签中进行设置。我还添加了NSCameraUsageDescription键和字符串。不幸的是,由于完全相同的错误,我的应用程序不断崩溃。

1 个答案:

答案 0 :(得分:1)

您可以通过设置Info.plist并在Create Info.plist Section in Binary中设置Info.plist文件的路径(以粗体显示的更改)来将Xcode > Target > Build Settings > Packaging嵌入二进制文件中:

Xcode target Info.plist settings

您的Info.plist可能看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>CFBundleIdentifier</key>
    <string>com.mycorp.myapp</string>
    <key>CFBundleName</key>
    <string>My App</string>
    <key>NSMicrophoneUsageDescription</key>
    <string>record from the microphone</string>
    <key>NSCameraUsageDescription</key>
    <string>record from the camera</string>
</dict>
</plist>

NB :在Xcode(11.2.1 / Catalina 10.15.1)的调试器中运行时,我仍然遇到隐私异常,但是plist 嵌入在二进制我猜这是一个Xcode错误。解决此问题的方法是将Info.plist放到Products目录中,尽管每次修改二进制文件时您似乎都必须重新授权麦克风/摄像机使用。