[Flutter] 디버그 모드에서는 작동 하는데, 릴리즈 모드에서만 작동이 안될 때?

zunu·2023년 2월 6일
0

현재 서비스 중이던 앱에서 로그인 관련 버그가 터졌다.

안드로이드 핸드폰 한정으로 나타난 버그인데 기존엔 정상적으로 되던 기능이 작동하지 않아 난감했다. 더구나 아이폰은 정상적으로 작동했고 안드로이드 핸드폰 역시 릴리즈 모드가 아닌 디버그 모드에선 정상적으로 작동했다.

기능을 요약하자면 FirebaseMessaging을 통해 서버에서 로그인이 되었다는 메세지를 받아야 했는데, 이게 앱이 백그라운드에서 정상적으로 작동하지 않았다.

에러는 아래와 같았다.

에러 자체는 간결해서 검색해보기도 편했는데, 검색하니
@pragma('vm:entry-point')
라는 문구를 클래스 및 함수 위에 선언하라는 답변이 있었다.
(출처-https://stackoverflow.com/q/74675682)

우선 이렇게 해주니 문제없이 정상 작동하였다.
그럼 저 선언문은 무슨 뜻을 가졌고 이 전에는 왜 동작하지 않았던 것일까?

이러한 궁금증을 가졌던 사람이 또 있었나 보다.
대략적으로 다트 컴파일러에게 '이러한 함수는 네이티브 코드에서 사용을 할 것이다.'라고 선언한다는 것으로 볼 수 있을 것 같다.
(출처-https://stackoverflow.com/q/64314719)

그러므로 네이티브에서 함수를 호출하게 될 일이 있는데 에러로 인해 함수 실행이 되지 않는다면 위의 전처리 명령어를 써주어 해결하도록 하자.

profile
개발새발

0개의 댓글