1、10.14加入了摄像头和麦克风授权的机制,可能会出现在时候摄像头和麦克风时的crash
最新升级到10.14.5后,基于OBS的程序用到麦克风后摄像头,在开启摄像的时候crash,这个应该是系统没有授权摄像头权限导致的,需要我们在应用的plist文件里增加权限请求列表(NSMicrophoneUsageDescription,NSCameraUsageDescription),这样就不会crash了。

授权字段也可能是变成(Privacy - Camera Usage Description,Privacy - Microphone Usage Description)

2、mac 公证签名需要后,可能会出现crash
最新的mac10.14.5+后,mac需要公证签名后才能正常运行,但在网上查了资料,qt的程序由于用qtcreator开发,签名需要用命令行实现,但为了满足公证签名要求,需要满足一个条件:Build your app with a hardened runtime,在xcode10+上是有这个选项,但qtcreator(5.7.1)貌似没有,所以需要在签名的时候加上--options "runtime" 选项按照https://skyronic.com/2019/07/app-notarization-for-qt-applications/的方式,公证签名是可以的,在其他机子运行也是没问题的,但是,如果程序用到了摄像头、麦克风等需要授权的功能时,就会出现crash的,原因是我们还需要额外配置权限,这就是xcode10+在开启hardened runtime时有一个配置文件一般是appname.entitlements,这里面可以配置当前需要的权限,这里我这边尽量配置了多的权限,包括摄像头、麦克风等。有了这个思路,再结合资料(https://blog.csdn.net/xytx_823/article/details/102873981),我们在签名的时候带上--entitlements {path}/appname.entitlements 参数,我这边把appname.entitlements放在xxx.app/Contents 目录下,注意entitlements文件也需要签名的。app的签名用 codesign -f -o runtime --entitlements [path]/app.entitlements --timestamp --deep -s "Developer ID Application xxx" -i "com.company.xxx" [path]/"test.app",而其他文件签名可以用codesign -s "<Key Name>" --options "runtime" "file_path",这样就可以在别的机子上真正的跑起来了。
总结了:还想用xcod比较靠谱,少采坑。


本文介绍了在Mac 10.14.5及更高版本中,Qt应用程序遇到的摄像头和麦克风授权问题以及公证签名导致的崩溃问题。解决方案包括在plist文件中添加权限请求,使用命令行进行签名并启用hardened runtime,以及配置entitlements文件以允许权限。通过这些步骤,可以解决程序运行时的权限问题和公证签名问题。

2539

被折叠的 条评论
为什么被折叠?



