Flutter 앱에서 네이티브 코드를 포함한 App Bundle을 빌드할 때, 비정상 종료(Crash) 및 ANR(Application Not Responding)을 더 쉽게 분석하고 디버그하기 위해 디버그 기호 파일을 업로드하는 것이 중요합니다.
이를 위해 다음 단계를 따르세요:
1. 네이티브 디버그 기호 생성
Flutter 프로젝트의 android/app/build.gradle 파일을 열고 buildTypes 섹션에 debugSymbols 설정을 추가하여 디버그 기호 파일을 생성하도록 합니다:
android {
...
buildTypes {
release {
...
ndk {
debugSymbolLevel 'FULL'
}
}
}
}
2. 디버그 기호 업로드
Google Play 콘솔에서 디버그 기호 파일을 업로드하는 방법은 다음과 같습니다
1. App Bundle 빌드: 먼저 App Bundle 파일을 생성합니다. 명령어는 다음과 같습니다
flutter build appbundle
이 명령어는 build/app/outputs/bundle/release/app.aab 파일을 생성합니다.
2. 디버그 기호 파일 찾기: app-release.symbols 디렉토리가 생성된 것을 확인합니다. 이 디렉토리는 build/app/outputs/symbols/release/ 경로에 있습니다.
3. Google Play 콘솔에 업로드:
- Google Play 콘솔에 로그인하고 해당 앱의 프로젝트로 이동합니다.
- 릴리스 관리 > App Bundle 탐색기로 이동합니다.
- 빌드된 App Bundle 파일을 업로드합니다.
- 심볼 파일 업로드 버튼을 클릭하고 app-release.symbols 디렉토리 안의 .so 파일들을 압축(zip)하여 업로드합니다.
3. Firebase Crashlytics 설정
Firebase Crashlytics를 사용하여 네이티브 크래시 리포팅을 설정할 수도 있습니다. 이를 위해 Firebase 콘솔에 앱을 등록하고 google-services.json 파일을 Flutter 프로젝트의 android/app 디렉토리에 추가해야 합니다.
- Firebase 설정: Firebase 콘솔에서 프로젝트를 생성하고 Firebase Crashlytics를 추가합니다.
- 프로젝트에 Firebase 추가:
- android/build.gradle 파일을 열고 다음을 추가합니다:
buildscript {
dependencies {
classpath 'com.google.gms:google-services:4.3.10'
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.7.1'
}
}
- android/app/build.gradle 파일을 열고 다음을 추가합니다:
apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.google.firebase.crashlytics'
- Crashlytics 초기화:
- main.dart 파일에 Firebase를 초기화하는 코드를 추가합니다
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_crashlytics/firebase_crashlytics.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterError;
runApp(MyApp());
}
4. CI/CD 파이프라인 설정
빌드 및 배포 프로세스를 자동화하기 위해 CI/CD 파이프라인을 설정할 수도 있습니다. GitHub Actions, GitLab CI, Jenkins 등을 사용하여 빌드 후 디버그 기호 파일을 자동으로 업로드할 수 있습니다.
이 단계를 따르면 Flutter 앱의 네이티브 코드 비정상 종료 및 ANR 문제를 더 쉽게 분석하고 디버그할 수 있습니다.
수발가족을 위한 일기장 “나비일기장”
https://play.google.com/store/apps/details?id=com.maccrey.navi_diary_release
비공개테스트를 위한 20명의 테스터모집 앱 "테스터 쉐어"
https://play.google.com/store/apps/details?id=com.maccrey.tester_share_release
'Flutter > Flutter Programming' 카테고리의 다른 글
App ICON 변경 (0) | 2024.06.03 |
---|---|
플러터에서 로그인 여부에 따라 페이지 라우팅하기 (0) | 2024.05.31 |
플러터 에러 "Cannot run with sound null safety, because the following dependencies" (0) | 2024.05.30 |
플러터에서 Invalid use of a private type in a public API 에러 처리방법 (0) | 2024.05.30 |
플러터에서 이미지 표시하는 방법 (초보자 가이드) (0) | 2024.05.30 |