👻

【Flutter】MacOSでソケット通信(HTTP)ができない

2023/09/13に公開

解決方法

DebugProfile.entitlementsRelease.entitlementsに以下を追加します。

<!-- クライアント側の場合 -->
<key>com.apple.security.network.client</key>
<true/>
<!-- サーバー側の場合 -->
<key>com.apple.security.network.server</key>
<true/>

発生した事象

MacOSのアプリをFlutterでReleaseビルドを行ったところ、
APIとの通信で使用していたhttp通信の処理で以下のエラーが発生しました。

[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: ClientException with SocketException: Connection failed (OS Error: Operation not permitted, errno = 1), address = api.github.com, port = 443, uri=https://api.github.com/repos/rikitonoto/silkroad/contents/required_version?ref=main
#0      IOClient.send (package:http/src/io_client.dart:119)
io_client.dart:1
<asynchronous suspension>
#1      BaseClient._sendUnstreamed (package:http/src/base_client.dart:93)
base_client.dart:1
<asynchronous suspension>

他にも調査をしていくと、dart:ioから実行するソケット通信ができませんでした。
原因はパーミッションが足りていないことにより、通信ができていませんでした。

GitHubで編集を提案

Discussion