macOS 应用程序崩溃并且不提示相机权限

macOS app crashes and does not prompt for camera permissions

我的应用程序在除 Catalina 之外的任何其他 macOS 版本中运行良好。我已经按照 here 的说明在 Info.plist 文件中添加了摄像头和麦克风权限,但是应用程序在提示权限时一直崩溃(我什至尝试添加每个可用的权限 XCode 提供)。如果我从终端 运行 我的应用程序实际上提示 "Terminal" 想访问相机。

有什么想法吗?这是日志的一部分:

Process:               FooApp [1761]
Path:                  /Applications/FooApp.app/Contents/Home/bin/./FooApp
Identifier:            com.fooApp
Version:               1.6.0.3 (1.6.0.3)
Code Type:             X86-64 (Native)
Parent Process:        ??? [1757]
User ID:               501

Date/Time:             2019-12-03 13:53:30.472 +0100
OS Version:            Mac OS X 10.15.1 (19B88)
Report Version:        12
Anonymous UUID:        0FEAB303-C00B-E970-1979-5CE1CC615C4E


Time Awake Since Boot: 3100 seconds

System Integrity Protection: disabled

Crashed Thread:        19  Dispatch queue: com.apple.root.default-qos

Exception Type:        EXC_CRASH (SIGKILL)
Exception Codes:       0x0000000000000000, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Termination Reason:    Namespace TCC, Code 0x0

Thread 19 Crashed:: Dispatch queue: com.apple.root.default-qos
0   libsystem_kernel.dylib          0x00007fff6377c15e __terminate_with_payload + 10
1   libsystem_kernel.dylib          0x00007fff63796512 abort_with_payload_wrapper_internal + 119
2   libsystem_kernel.dylib          0x00007fff6379651d abort_with_payload + 9
3   com.apple.TCC                   0x00007fff5b9060d1 __CRASHING_DUE_TO_PRIVACY_VIOLATION__ + 163
4   com.apple.TCC                   0x00007fff5b90602e __TCCAccessRequest_block_invoke.114 + 500
5   com.apple.TCC                   0x00007fff5b903bc5 __tccd_send_message_block_invoke + 231
6   libxpc.dylib                    0x00007fff63879ef4 _xpc_connection_reply_callout + 36
7   libxpc.dylib                    0x00007fff63879e7c _xpc_connection_call_reply_async + 69
8   libdispatch.dylib               0x00007fff635dc578 _dispatch_client_callout3 + 8
9   libdispatch.dylib               0x00007fff635f3080 _dispatch_mach_msg_async_reply_invoke + 369
10  libdispatch.dylib               0x00007fff635eb48c _dispatch_kevent_worker_thread + 1324
11  libsystem_pthread.dylib         0x00007fff63835763 _pthread_wqthread + 362
12  libsystem_pthread.dylib         0x00007fff6383557b start_wqthread + 15

Thread 20:: Dispatch queue: com.apple.root.default-qos
0   libsystem_kernel.dylib          0x00007fff6377a4a2 __wait4 + 10
1   libmonosgen-2.0.1.dylib         0x000000010e87fecd mono_handle_native_crash + 397
2   libsystem_platform.dylib        0x00007fff6382db1d _sigtramp + 29
3   libsystem_c.dylib               0x00007fff636ece1b __v2printf + 475
4   libsystem_kernel.dylib          0x00007fff6379651d abort_with_payload + 9
5   com.apple.TCC                   0x00007fff5b9060d1 __CRASHING_DUE_TO_PRIVACY_VIOLATION__ + 163
6   com.apple.TCC                   0x00007fff5b90602e __TCCAccessRequest_block_invoke.114 + 500
7   com.apple.TCC                   0x00007fff5b903bc5 __tccd_send_message_block_invoke + 231
8   libxpc.dylib                    0x00007fff63879ef4 _xpc_connection_reply_callout + 36
9   libxpc.dylib                    0x00007fff63879e7c _xpc_connection_call_reply_async + 69
10  libdispatch.dylib               0x00007fff635dc578 _dispatch_client_callout3 + 8
11  libdispatch.dylib               0x00007fff635f3080 _dispatch_mach_msg_async_reply_invoke + 369
12  libdispatch.dylib               0x00007fff635eb48c _dispatch_kevent_worker_thread + 1324
13  libsystem_pthread.dylib         0x00007fff63835763 _pthread_wqthread + 362
14  libsystem_pthread.dylib         0x00007fff6383557b start_wqthread + 15

您是否尝试通过设置授予访问权限?某些应用程序不支持新 Mac OS 版本。因此,当它尝试请求访问时,它崩溃了

  1. 在您的终端中输入 :launchctl list|grep -i com.apple.tccd
  2. 如果什么都没有尝试输入:launchctl load -wF /System/Library/LaunchAgents/com.apple.tccd.plist
  3. 重启你的mac

最后,在整个 Internet 上都没有帮助后,我发现问题是 Info.plist 用来打开我的应用程序的程序是一个脚本,它设置了一些需要的东西,然后打开程序。

这里的错误是我的应用程序没有为使用脚本打开的应用程序使用 Info.plist 文件,因为脚本是该文件的所有者。然后应用程序崩溃,因为它没有 Info.plist 文件来获取提示权限的消息。

在我的例子中,我必须创建一个带有单声道 mkbundle 的 unix 可执行文件作为主要更改。

我写了一篇关于在 macOS 中打包的文章 post,我在这里对此进行了解释:https://www.theimpostersyndrome.dev/posts/macospackaging/