본문 바로가기
Flutter/Flutter Programming

구글콘솔에서 "이 App Bundle 아티팩트 유형은 네이티브 코드를 포함하며 아직 디버그 기호가 업로드되지 않았습니다. 비정상 종료 및 ANR을 더 쉽게 분석하고 디버그할 수 있도록 기호 파일을 업로드하는 것이 좋습니다" 해결방법

by Maccrey 2024. 5. 30.
반응형

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 디렉토리에 추가해야 합니다.

  1. Firebase 설정: Firebase 콘솔에서 프로젝트를 생성하고 Firebase Crashlytics를 추가합니다.
  2. 프로젝트에 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'
  1. 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

 

나비일기장 [수발일기장] - Google Play 앱

수형자 수발가족및 수발인을 위한 일기장으로 수형생활시기에 따른 정보를 얻을 수 있습니다.

play.google.com

 

 

비공개테스트를 위한 20명의 테스터모집 앱 "테스터 쉐어"

 

https://play.google.com/store/apps/details?id=com.maccrey.tester_share_release

 

Tester Share [테스터쉐어] - Google Play 앱

Tester Share로 Google Play 앱 등록을 단순화하세요.

play.google.com

 

반응형