← 전체 글로 돌아가기

Flutter

Flutter 라우팅이 에뮬레이터와 실기기에서 다를 때

모바일 앱의 라우팅 문제는 개발 환경에서는 안 나타나다가 실기기에서 터진다. 문제를 체계적으로 좁혀나가는 절차를 익혀두자.

Flutter 개발에서 가장 답답한 순간 중 하나는 에뮬레이터에서는 완벽한데 실기기에서 앱이 이상하게 작동할 때다. 라우팅 문제는 특히 그렇다.

처음 보이는 증상

화면을 클릭해도 반응이 없는가, 다른 화면으로 넘어가는가, 아니면 넘어갔다가 다시 돌아오는가. 증상이 정확할수록 원인을 찾기 쉽다. 단순히 "안 된다"는 것보다는 "여기서 탭하면 여기로 가야 하는데 여기로 간다" 같은 구체적인 설명이 중요하다.

flutter doctor로 환경 확인

flutter doctor -v
flutter run --verbose

먼저 Flutter 개발 환경이 제대로 설정되었는가를 본다. Flutter, Dart, 필요한 SDK가 모두 설치되어 있는가. 실기기가 제대로 연결되었는가를 확인한다.

권한 확인

앱이 필요한 권한을 실기기에서 가지고 있는가. Android의 경우 AndroidManifest.xml, iOS의 경우 Info.plist에 필요한 권한이 선언되어 있는가를 본다.

에뮬레이터에서 명령어 실행

실기기에서 앱을 실행할 때와 같은 명령어를 쓴다. flutter run 출력에서 경고나 에러 메시지를 찾는다. 에뮬레이터에서는 나타나지 않던 메시지가 실기기에서는 나올 수 있다.

빌드 모드 확인

디버그 모드, 릴리스 모드에서 다르게 작동하는가를 확인한다. 릴리스 모드에서만 라우팅이 문제를 일으킬 수도 있다.

최종 점검

flutter doctor 출력이 정상인가. 에뮬레이터에서와 실기기에서 경고 메시지가 다른가를 비교한다. 같은 버전의 Dart와 Flutter를 쓰고 있는가도 확인한다. 이렇게 확인하면 다음에 비슷한 환경 문제가 나올 때 훨씬 빨리 해결할 수 있다.