플러터 앱을 개발중인데 ios 앱을 실행하면 다음과 같은 에러가 발생합니다.
[ERROR:flutter/shell/platform/darwin/ios/framework/Source/FlutterDartVMServicePublisher.mm(129)] Could not register as server for FlutterDartVMServicePublisher, permission denied. Check your 'Local Network' permissions for this app in the Privacy section of the system Settings.
위 에러를 한 번 해결보겠습니다.
FlutterDartVMServicePublisher, permission denied 원인 분석
Flutter를 ios에 설치하고 동작할 때 ios위에 flutter를 올려서 동작하는 방식을 사용하고 있습니다.
그렇기 때문에 Debug 모드로 ios앱을 실행할 때 ios OS와 Flutter 같의 통신이 필요합니다.
이 통신을 통해 Debug 모드 상태에서 앱과 OS정보를 받아오게됩니다.
즉, FlutterDartVMServicePublisher, permission denied 에러가 발생했다고 해서
앱 자체가 동작하지 않는다던가 하는 문제는 발생하지 않습니다.
단지 Flutter에서 iOS 앱의 디버깅 기능을 사용하지 못할뿐입니다.
위와 같은 문제가 원인이기 때문에 Release 모드에서는 FlutterDartVMServicePublisher, permission denied 에러가 발생하지 않습니다.
다른 원인으로는 Flutter의 버전 업데이트에 따른 버그라는 의심도 있습니다.
https://github.com/flutter/flutter/issues/160930
flutter attach fails to discover Dart VM service on iOS Simulator in add2app setup · Issue #160930 · flutter/flutter
I'm experiencing an issue where the flutter attach command fails to automatically discover the Dart VM service when running a Flutter module in an iOS Simulator. The command works correctly on a ph...
github.com
Flutter 공식 gitgub에 올라온 이슈를 살펴보면 똑같은 프로젝트로 Flutter 버전만 바꿨는데 갑자기 해당 에러가 발생했다고 말하고 있습니다.

FlutterDartVMServicePublisher, permission denied 에러 해결 방법
첫 번째 해결 방법은 공식문서에 나와있는 방법을 사용하는 것입니다.
1. Flutter 공식 문서에 있는 Local Network 권한 허용 방법
https://docs.flutter.dev/add-to-app/ios/project-setup#set-local-network-privacy-permissions
Integrate a Flutter module into your iOS project
Learn how to integrate a Flutter module into your existing iOS project.
docs.flutter.dev
간단히 말하면 Info.plist 파일에 권한을 추가하는 것입니다.
Info.plist에 들어가서 다음과 같이 2개를 설정합니다.
- Privacy - Local Network Usage Description
- Bonjour services

또는 Vs-Code로 Info.plist 파일을 열어서 다음과 같이 넣어주는 방법도 있습니다.
<key>NSBonjourServices</key>
<array>
<string>_dartVmService._tcp</string>
<string>_dartobservatory._tcp</string>
</array>
<key>NSLocalNetworkUsageDescription</key>
<string>이 권한은 디버그 모드에서 핫 리로드와 같은 Flutter 기능을 활성화하기 위해 필요합니다.</string>
주의할 점으로는 일단 Info.plist에 위와 같이 넣어서 실행해보고 괜찮아졌다면 Info파일을 Debug, Release 버전으로 나누어서 사용할 필요가 있습니다.
나누지 않을 경우 AppStore 심사에 통과되지 않을 가능성이 있습니다.
나누는 방법은 공식 가이드를 참조하시길 바랍니다.
https://docs.flutter.dev/add-to-app/ios/project-setup#set-local-network-privacy-permissions
Integrate a Flutter module into your iOS project
Learn how to integrate a Flutter module into your existing iOS project.
docs.flutter.dev
위와 같이 설정한 이후 캐시를 삭제하고 재빌드 해보는 것을 추천합니다.
- flutter clean
- cd ios
- pod deintegrate
- rm -rf ~/Library/Developer/Xcode/DerivedData/
- 혹시 DerivedData Location 설정을 Relative로 했다면 ios 폴더 내부에 있을 확률이 높기 때문에 찾아서 삭제
- pod install --repo-update
- flutter run
2. Flutter Attatch 후 다시 연결하기
저는 위와 같은 방법으로 해결되지 않았기 때문에 다음과 같은 임시 방법을 사용했습니다.

1. flutter attach 커맨드를 사용합니다
2. 기다리다보면 다음과 같은 메시지가 뜹니다. 이 때 iOS 에뮬레이터에서 앱을 강제로 종료합니다.

3. 다시 한 번 Flutter 앱을 iOS에서 실행하도록 합니다.
4. 정상적으로 load되는 것을 확인할 수 있습니다.
위 방법은 여기서 확인할 수 있습니다.
https://github.com/flutter/flutter/issues/160930
flutter attach fails to discover Dart VM service on iOS Simulator in add2app setup · Issue #160930 · flutter/flutter
I'm experiencing an issue where the flutter attach command fails to automatically discover the Dart VM service when running a Flutter module in an iOS Simulator. The command works correctly on a ph...
github.com
저는 이 방법을 통해 FlutterDartVMServicePublisher, permission denied 에러 문제를 해결했습니다.
아직은 임시 방법이지만 Flutter가 업데이트되면 추후 해결될수도 있는 문제라고 생각됩니다.
(일단 앱 동작 자체는 큰 문제가 없기 때문에....)
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
댓글