👻
【Flutter】MacOSでソケット通信(HTTP)ができない
解決方法
DebugProfile.entitlements
とRelease.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
から実行するソケット通信ができませんでした。
原因はパーミッションが足りていないことにより、通信ができていませんでした。
Discussion