【问题标题】:Missing info.plist file for C++ command line tool application within XcodeXcode 中的 C++ 命令行工具应用程序缺少 info.plist 文件
【发布时间】:2019-08-26 09:15:10
【问题描述】:

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

CameraCalibration[2314:193066] [access] 此应用程序已崩溃,因为它试图在没有使用说明的情况下访问隐私敏感数据。应用程序的 Info.plist 必须包含一个 NSCameraUsageDescription 键和一个字符串值,向用户解释应用程序如何使用这些数据。 程序以退出代码结束:9

我已经尝试添加一个 info.plist 文件并将其设置在应用程序的常规选项卡中。我还添加了 NSCameraUsageDescription 键和字符串。不幸的是,由于完全相同的错误,我的应用程序不断崩溃。

【问题讨论】:

  • 我也是这么想的。但是为什么我的应用程序要求一个?
  • 抱歉,我之前的评论有误,删除了。看看Apple's Code Signing Guide。它有一个单文件工具部分。
  • 谢谢。我会调查的。

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


【解决方案1】:

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

您的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 目录可以解决此问题,尽管每次修改二进制文件时您似乎都必须重新授权麦克风/摄像头的使用。

【讨论】:

  • 感谢产品目录提示中的 Info.plist!
  • 这对我不起作用;我无法用 swift 读取 plist 信息
  • 这个问题不是关于阅读你自己的 plist - 你可以开始一个新问题吗?
猜你喜欢
  • 1970-01-01
  • 2019-10-22
  • 2017-03-12
  • 1970-01-01
  • 1970-01-01
  • 2018-10-17
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多