【问题标题】:Flutter web app is crashing DUE_TO_PRIVACY_VIOLATION in debug (camera permissions)Flutter Web 应用程序在调试中崩溃 DUE_TO_PRIVACY_VIOLATION(相机权限)
【发布时间】:2020-12-21 14:52:51
【问题描述】:

我正在开发一些使用摄像头和麦克风输入的 Flutter Web 应用程序。对于开发,我在 macOS (Catalina) 上使用 VS Code。当我启动应用程序时,Chrome 实例就会启动。这个实例是某种“development”Chrome 窗口(我对 Web 和 Flutter 开发完全陌生,所以我不确定术语),它与(让我们比如说)'production' Chrome 窗口。

问题来了:

  • 当请求相机输入时,这个“development”Chrome 提示用户允许访问摄像头和麦克风。后 允许访问,应用程序立即崩溃,原因 __CRASHING_DUE_TO_PRIVACY_VIOLATION__.
  • 另一方面,如果我运行网络服务器(在本地机器上) 使用相同的代码并从“production”访问该端口 铬,一切正常。允许访问后 摄像头和麦克风(在 Chrome 中),操作系统提示其请求 允许访问摄像头和麦克风(代表 Chrome),以及 在允许那个之后,我得到了摄像头输入。

使用这种方法(网络服务器 + 'production' Chrome)似乎不是进行开发的好方法,因为我不知道如何以这种方式调试我的代码。 我知道 Mac 上的每个应用程序都必须定义 权利使用说明 才能访问相机和麦克风,如果它是本机应用程序,这将是一个简单的解决方法。但在这种情况下,我不确定如何让“development” Chrome 像“production” Chrome 一样工作。它就像它缺少相机和麦克风使用和崩溃的权利

有人知道如何克服这个障碍吗?我在设置 Flutter 环境时是否遗漏了什么?

附:在这里发布一些 Flutter/Dart 代码不会有任何区别。 flutter-webrtc-demo 将以同样的方式崩溃。任何使用摄像头的 Web 应用程序在此“development”Chrome 实例中打开时,都会以同样的方式崩溃(我只尝试过使用 Teams,但我很确定所有其他人都会做同样的事情)。

崩溃日志:

Identifier:            com.google.Chrome
Version:               85.0.4183.83 (4183.83)
Code Type:             X86-64 (Native)
Parent Process:        dart [11176]
Responsible:           Electron [5097]
User ID:               515352633

Date/Time:             2020-09-02 12:55:10.488 +0200
OS Version:            Mac OS X 10.15.5 (19F101)
Report Version:        12
Bridge OS Version:     4.5 (17P5300)
Anonymous UUID:        9159D7A7-AA5D-B3F0-C032-A79F092DC4C1


Time Awake Since Boot: 9100 seconds

System Integrity Protection: enabled

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

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

Termination Reason:    Namespace TCC, Code 0x0

Application Specific Information:
Calling encodeRestorableStateWithCoder: on window of class 'NSKVONotifying_BrowserNativeWidgetWindow' with title 'localhost:54518/#/' (delegate is 0x7fca60ec9ac0)

...............

Thread 31 Crashed:: Dispatch queue: com.apple.root.default-qos
0   libsystem_kernel.dylib          0x00007fff6bdb3ad6 __abort_with_payload + 10
1   libsystem_kernel.dylib          0x00007fff6bdb53df abort_with_payload_wrapper_internal + 80
2   libsystem_kernel.dylib          0x00007fff6bdb5411 abort_with_payload + 9
3   com.apple.TCC                   0x00007fff6249759f __CRASHING_DUE_TO_PRIVACY_VIOLATION__ + 163
4   com.apple.TCC                   0x00007fff62495531 __TCCAccessRequest_block_invoke.114 + 500
5   com.apple.TCC                   0x00007fff62495a58 __tccd_send_message_block_invoke + 231
6   libxpc.dylib                    0x00007fff6be9828f _xpc_connection_reply_callout + 36
7   libxpc.dylib                    0x00007fff6be98217 _xpc_connection_call_reply_async + 69
8   libdispatch.dylib               0x00007fff6bbf96c2 _dispatch_client_callout3 + 8
9   libdispatch.dylib               0x00007fff6bc1015d _dispatch_mach_msg_async_reply_invoke + 369
10  libdispatch.dylib               0x00007fff6bc085f9 _dispatch_kevent_worker_thread + 1316
11  libsystem_pthread.dylib         0x00007fff6be53a85 _pthread_wqthread + 362
12  libsystem_pthread.dylib         0x00007fff6be52b77 start_wqthread + 15

【问题讨论】:

    标签: macos flutter web camera crash


    【解决方案1】:

    这似乎与这里的问题相似:https://github.com/microsoft/vscode/issues/95062。 Flutter 应用程序需要通过您用于调试的任何 IDE 的权限。

    • 使用命令从终端运行 VSCode 'sudo /Applications/Visual\ Studio\ Code.app/Contents/MacOS/Electron'
    • 启动需要摄像头/麦克风的 Flutter 应用程序。
    • 系统会要求您提供权限,应用程序不应崩溃。
    • 终端将在具有摄像头/麦克风权限的应用程序列表中,并且从现在开始,Flutter 应用程序应该可以像这样运行。

    更多信息请参见Mac OS Mojave microphone permission for Visual Studio Code

    【讨论】:

    • 我尝试使用 sudo "/Applications/Visual Studio Code.app/Contents/MacOS/Electron" 从终端运行 VS Code - 它可以工作...被要求获得许可,并且终端位于相机允许的应用程序列表中。每次我从终端运行 VS Code(即使没有 sudo)我都拥有我需要的所有权限。非常感谢人:)
    【解决方案2】:

    我可以通过允许摄像头和麦克风的 vscode 权限来实现,但我必须首先创建这些授权权限。

    看看这个,这是我找到它的地方: https://github.com/microsoft/vscode/issues/95062#issuecomment-751241372

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-28
      • 1970-01-01
      • 2020-08-02
      • 2020-07-31
      • 1970-01-01
      • 1970-01-01
      • 2017-03-24
      • 1970-01-01
      相关资源
      最近更新 更多