Получайте читаемые отчеты о сбоях на панели инструментов Crashlytics.


По умолчанию Firebase Crashlytics автоматически настраивает ваш проект Flutter для загрузки необходимых файлов символов, которые гарантируют, что отчеты о сбоях будут деобфускированы и удобочитаемы для человека.

К сожалению, бывают случаи, когда проект может быть настроен не полностью. В этом руководстве описывается, что делает автоматизация, и представлены первые шаги по отладке настройки вашего проекта.

платформы Apple

Проверьте свою конфигурацию для загрузки файлов dSYM.

Добавление плагина Crashlytics Flutter и запуск команды flutterfire configure попытается добавить сценарий запуска в рабочую область Xcode вашего проекта, который находит и загружает необходимые файлы символов dSYM в Crashlytics . Без этих файлов вы увидите предупреждение «Отсутствует dSYM» на панели управления Crashlytics , а исключения будут удерживаться серверной частью до тех пор, пока недостающие файлы не будут загружены.

Если у вас возникла эта проблема, сначала убедитесь, что у вас установлен скрипт запуска:

  1. Найдите и откройте файл рабочей области Xcode в каталоге iOS вашего проекта ( FLUTTER_PROJECT_NAME /ios/Runner.xcworkspace ).

  2. Определите, был ли добавлен сценарий запуска под названием [firebase_crashlytics] Crashlytics Upload Symbols в этапы сборки целевого объекта Runner.

    См. соответствующий раздел ниже, чтобы узнать, существует ли сценарий запуска или он не существует .

Если этот сценарий запуска не существует, вы можете добавить его вручную:

  1. Найдите идентификатор приложения Firebase для вашего приложения Apple. Вот два разных места, где вы можете найти этот идентификатор:

    • В консоли Firebase перейдите в свой > Настройки проекта . Прокрутите вниз до карточки «Ваши приложения» , затем нажмите на свое приложение Firebase Apple, чтобы просмотреть информацию о приложении, включая его идентификатор приложения .

    • В каталоге верхнего уровня вашего проекта Flutter найдите файл firebase_options.dart . Идентификатор приложения Firebase для вашего приложения Apple помечен как GOOGLE_APP_ID .

  2. Нажмите > «Новая фаза запуска сценария» .

    Убедитесь, что этот новый этап «Выполнение сценария» является последним этапом сборки вашего проекта. В противном случае Crashlytics не сможет правильно обработать dSYM.

  3. Разверните новый раздел «Выполнить сценарий» .

  4. В поле сценария (расположенное под меткой «Shell» ) добавьте следующие сценарии запуска.

    Эти сценарии обрабатывают ваши файлы dSYM и загружают их в Crashlytics .

    $PODS_ROOT/FirebaseCrashlytics/upload-symbols --build-phase --validate -ai FIREBASE_APP_ID -- $DWARF_DSYM_FOLDER_PATH/App.framework.dSYM
    $PODS_ROOT/FirebaseCrashlytics/upload-symbols --build-phase -ai FIREBASE_APP_ID -- $DWARF_DSYM_FOLDER_PATH/App.framework.dSYM 
    • FIREBASE_APP_ID : ваш идентификатор приложения Firebase Apple (а не идентификатор вашего пакета Apple).
      Пример идентификатора приложения Firebase Apple: 1:1234567890:ios:321abc456def7890

    Вот два способа найти идентификатор приложения Firebase:

    • В файле GoogleService-Info.plist вашим идентификатором приложения является значение GOOGLE_APP_ID ; или

    • В консоли Firebase перейдите в настройки проекта . Прокрутите вниз до карточки «Ваши приложения» , затем нажмите нужное приложение Firebase, чтобы найти его идентификатор приложения.

  5. В разделе «Входные файлы» добавьте пути к расположению следующих файлов:

    ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}
    ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}
    ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist
    $(TARGET_BUILD_DIR)/$(UNLOCALIZED_RESOURCES_FOLDER_PATH)/GoogleService-Info.plist
    $(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)

    Xcode ищет эти входные файлы в указанных местах, чтобы убедиться, что файлы сборки доступны для сценария запуска. Кроме того, если включена «песочница» пользовательских сценариев , Xcode разрешает сценарию запуска только доступ к файлам, указанным во входных файлах .

    • Предоставление местоположения файлов dSYM вашего проекта позволяет Crashlytics обрабатывать dSYM.
    • Предоставление местоположения встроенного файла GoogleService-Info.plist вашего приложения позволяет Crashlytics связать dSYM с вашим приложением Firebase.
    • Указание местоположения исполняемого файла вашего приложения позволяет сценарию запуска предотвратить повторную загрузку одного и того же dSYM. Обратите внимание, что двоичные файлы приложения не загружаются .

Если сценарий запуска существует, обратитесь к специальному руководству Apple по устранению неполадок dSYM . Если вы решите загрузить файлы dSYM с помощью описанного процесса, вам необходимо будет предпринять следующие дополнительные шаги:

  1. Найдите идентификатор приложения Firebase для вашего приложения Apple. Вот два разных места, где вы можете найти этот идентификатор:

    • В консоли Firebase перейдите в свой > Настройки проекта . Прокрутите вниз до карточки «Ваши приложения» , затем нажмите на свое приложение Firebase Apple, чтобы просмотреть информацию о приложении, включая его идентификатор приложения .

    • В каталоге верхнего уровня вашего проекта Flutter найдите файл firebase_options.dart . Идентификатор приложения Firebase для вашего приложения Apple помечен как GOOGLE_APP_ID .

  2. При запуске сценария upload-symbols используйте -ai FIREBASE_APPLE_APP_ID вместо -gsp /path/to/GoogleService-Info.plist .

Проверьте конфигурацию вашей версии на наличие Flutter и Crashlytics (если используется флаг --split-debug-info )

Если ваш проект Flutter использует флаг --split-debug-info (и, при необходимости, также флаг --obfuscate ), потребуются дополнительные шаги, чтобы показать читаемые трассировки стека для вашего приложения.

Убедитесь, что ваш проект использует конфигурацию рекомендованной версии (Flutter 3.12.0+ и плагин Crashlytics Flutter 3.3.4+), чтобы ваш проект мог автоматически генерировать и загружать символы Flutter (файлы dSYM) в Crashlytics .

Андроид

Проверьте конфигурацию зависимостей

Команда flutterfire configure пытается добавить необходимые зависимости в файлы сборки Gradle вашего проекта. Без этих зависимостей отчеты о сбоях в консоли Firebase могут оказаться запутанными, если обфускация включена.

Убедитесь, что следующие строки присутствуют в build.gradle уровня проекта и в build.gradle уровня приложения:

  • В файле сборки уровня проекта ( android/build.gradle ) проверьте наличие следующей строки:

    dependencies {
    // ... other dependencies
    
    classpath 'com.google.gms:google-services:4.3.5'
    classpath 'com.google.firebase:firebase-crashlytics-gradle:2.7.1'
    }
  • В файле сборки уровня приложения ( android/app/build.gradle ) проверьте наличие следующей строки:

    // ... other imports
    
    android {
    // ... your android config
    }
    
    dependencies {
    // ... your dependencies
    }
    
    // This section must appear at the bottom of the file
    apply plugin: 'com.google.gms.google-services'
    apply plugin: 'com.google.firebase.crashlytics'

Убедитесь, что вы используете CLI для загрузки символов Flutter (при использовании флага --split-debug-info )

Если ваш проект Flutter использует флаг --split-debug-info (и, при необходимости, также флаг --obfuscate ), потребуются дополнительные шаги, чтобы показать читаемые трассировки стека для вашего приложения.

Используйте интерфейс командной строки Firebase (v.11.9.0+) для загрузки символов отладки Flutter. Вам необходимо загрузить символы отладки , прежде чем сообщать о сбое из-за запутанной сборки кода.

В корневом каталоге вашего проекта Flutter выполните следующую команду:

firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/symbols
  • FIREBASE_APP_ID : идентификатор вашего приложения Firebase для Android (а не имя вашего пакета).
    Пример идентификатора приложения Firebase для Android: 1:567383003300:android:17104a2ced0c9b9b

    Вот два способа найти идентификатор приложения Firebase:

    • В файле google-services.json вашим идентификатором приложения является значение mobilesdk_app_id ; или

    • В консоли Firebase перейдите в настройки проекта . Прокрутите вниз до карточки «Ваши приложения» , затем нажмите нужное приложение Firebase, чтобы найти его идентификатор приложения.

  • PATH/TO /symbols : тот же каталог, который вы передаете флагу --split-debug-info при сборке приложения.

Если проблемы не исчезнут, обратитесь к руководству для Android по устранению неполадок с запутанными отчетами .