Flutter gRPC 开发桌面应用 code: 14 / codeName: UNAVAILABLE / Operation not permitted

1,001 阅读1分钟
flutter: Caught error: gRPC Error (code: 14, codeName: UNAVAILABLE, message: Error connecting: SocketException: Connection failed (OS Error: Operation not permitted, errno = 1), address = localhost, port = 50051, details: null, rawResponse: null, trailers: {})

闲来在 Mac 下试着用 Flutter + gRpc 开发桌面应用,折腾了半天,出来上面这样一个错误。 Flutter 程序在 APP 里执行就能正常访问 gRpc 的服务,Desktop 模式启动就是无法访问。 一直一头雾水,今天在一个 Flutter 群里问了一句,一位大哥没做过这个,指点了下,然后就解决了。 原来是权限的问题!

菜是原罪啊!

解决方法: 在工程的 macos/Runner 里找到 DebugProfile.entitlements 和 Release.entitlements, 然后分别添加上下面的权限,再次 Desktop 模式启动,即可正常访问 gRpc 的服务。

  • 两个文件是不是都需要添还没确认,一个是调试用的,一个是发布用的,按说都需要。
<key>com.apple.security.network.client</key>
<true/>