Flutter
Flutter 릴리즈 빌드 때문에 앱이 깨질 때
로컬 디버그 빌드에서는 잘 작동하지만 릴리즈 빌드에서 문제가 생기면, flutter doctor와 프로파일 설정을 먼저 확인해야 한다.
Flutter 앱을 개발할 때 로컬에서는 완벽한데, 릴리즈 빌드로 전환하면 갑자기 앱이 깨지는 경우가 있다. 이런 상황은 보통 빌드 설정이나 최적화 때문에 생긴다.
flutter doctor로 환경 점검
먼저 Flutter 개발 환경이 제대로 구성되어 있는지 확인한다.
flutter doctor -v
Android SDK 버전, Xcode 설정, 플러그인 호환성 등을 모두 확인한다. doctor가 경고를 보이면 그걸 먼저 해결해야 한다.
디버그 vs 릴리즈 빌드의 차이
디버그 빌드는 모든 최적화를 비활성화하고 디버깅 정보를 포함한다. 반면 릴리즈 빌드는 최적화를 강하게 적용한다.
이 차이 때문에 릴리즈 빌드에서만 나타나는 버그들이 있다:
- Null pointer 관련 버그
- 타입 캐스팅 문제
- 비동기 처리 타이밍 문제
실제로 실기기에서 릴리즈 빌드를 설치하고 테스트해야 한다.
flutter run --release -v
--verbose 플래그를 붙여서 상세 로그를 본다.
실기기에서 로그 확인
에뮬레이터가 아닌 실제 안드로이드 기기를 연결해서 로그를 본다.
adb logcat | grep flutter
Flutter 런타임 오류나 플러그인 오류가 표시될 것이다. 특히 native 코드와의 인터페이싱이 있다면, native 로그도 함께 확인해야 한다.
권한 설정 확인
androidManifest.xml에 필요한 권한이 모두 선언되어 있는지 확인한다. 특히 Android 6.0 이상에서는 런타임 권한을 따로 요청해야 하는 경우가 많다.
파일 접근, 위치 정보, 카메라 같은 민감한 권한은 반드시 확인하자.
빌드 모드에 따른 차이점
Flutter 릴리즈 빌드는 다양한 모드가 있다:
flutter run --release: 릴리즈 모드로 실행 (최적화 적용)flutter build apk --release: 릴리즈 APK 빌드flutter build appbundle --release: 릴리즈 App Bundle 빌드
각 모드에서 다르게 동작할 수 있으니, 실제 배포하는 형식(APK 또는 AAB)으로 빌드해서 테스트해야 한다.
하나씩만 바꿔가며 테스트
한 번에 여러 설정을 바꾸면 어느 게 문제를 일으켰는지 알 수 없다. 릴리즈 빌드 설정, 프로가드 규칙, 네이티브 라이브러리 설정 중 하나씩만 변경해가며 테스트하자.
빌드 로그 저장해두기
빌드가 성공했을 때의 로그를 저장해두고, 문제가 생겼을 때 이전 버전의 로그와 비교한다. 의존성이나 설정이 미묘하게 바뀌었을 수 있기 때문이다.