首页 > 解决方案 > 如何在 Mac 上调试访问相机的应用程序?

问题描述

我的 Qt C++ 应用程序从 Mac 上的摄像头捕获视频。它NSCameraUsageDescription在其 plist 文件中设置了值。但是,毫不奇怪,如果我从命令行或 Qt Creator 使用 lldb 运行它,这将无济于事。它只是与行崩溃:

2020-02-28 15:32:14.462735-0500 mqtt[47726:867880] [access] This app has crashed because it attempted to access privacy-sensitive data without a usage description.  The app's Info.plist must contain an NSCameraUsageDescription key with a string value explaining to the user how the app uses this data.

那么我该如何为lldb做到这一点?它在 Qt Creator 的 Info.plist 中,但我想如果它是通过 lldb 运行的,那将无济于事。

标签: macosqtlldb

解决方案


要允许您的应用程序访问相机,您应该有一个Info.plist文件,其中的字段NSCameraUsageDescription填充了一些内容。

如果您没有构建应用程序包 (.app),则可以将Info.plistnext 放在可执行文件中。然后下次你用它运行它时,lldb它会要求授权访问相机。一旦你给它一次,你可能不得不关闭应用程序并重新启动它。

根据我的测试,以下 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>NSCameraUsageDescription</key>
    <string>Video Input</string>
</dict>
</plist>

推荐阅读