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 版本。因此,当它尝试请求访问时,它崩溃了
- 在您的终端中输入
:launchctl list|grep -i com.apple.tccd
- 如果什么都没有尝试输入:
launchctl load -wF /System/Library/LaunchAgents/com.apple.tccd.plist
- 重启你的mac
最后,在整个 Internet 上都没有帮助后,我发现问题是 Info.plist 用来打开我的应用程序的程序是一个脚本,它设置了一些需要的东西,然后打开程序。
这里的错误是我的应用程序没有为使用脚本打开的应用程序使用 Info.plist 文件,因为脚本是该文件的所有者。然后应用程序崩溃,因为它没有 Info.plist 文件来获取提示权限的消息。
在我的例子中,我必须创建一个带有单声道 mkbundle
的 unix 可执行文件作为主要更改。
我写了一篇关于在 macOS 中打包的文章 post,我在这里对此进行了解释:https://www.theimpostersyndrome.dev/posts/macospackaging/
我的应用程序在除 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 版本。因此,当它尝试请求访问时,它崩溃了
- 在您的终端中输入
:launchctl list|grep -i com.apple.tccd
- 如果什么都没有尝试输入:
launchctl load -wF /System/Library/LaunchAgents/com.apple.tccd.plist
- 重启你的mac
最后,在整个 Internet 上都没有帮助后,我发现问题是 Info.plist 用来打开我的应用程序的程序是一个脚本,它设置了一些需要的东西,然后打开程序。
这里的错误是我的应用程序没有为使用脚本打开的应用程序使用 Info.plist 文件,因为脚本是该文件的所有者。然后应用程序崩溃,因为它没有 Info.plist 文件来获取提示权限的消息。
在我的例子中,我必须创建一个带有单声道 mkbundle
的 unix 可执行文件作为主要更改。
我写了一篇关于在 macOS 中打包的文章 post,我在这里对此进行了解释:https://www.theimpostersyndrome.dev/posts/macospackaging/