По умолчанию Firebase Crashlytics автоматически настраивает ваш проект Flutter для загрузки необходимых файлов символов, которые гарантируют, что отчеты о сбоях будут деобфусцированы и станут понятными человеку.
К сожалению, в некоторых случаях проект может быть настроен не полностью. В этом руководстве описывается, как работает автоматизация, и предлагаются первые шаги по отладке настроек вашего проекта.
Платформы Apple
Проверьте конфигурацию для загрузки файлов dSYM.
Добавление плагина Crashlytics Flutter и выполнение команды flutterfire configure
попытается добавить скрипт запуска в рабочую область Xcode вашего проекта, который найдёт и загрузит необходимые файлы символов dSYM в Crashlytics . Без этих файлов на панели управления Crashlytics появится предупреждение «Отсутствует dSYM», а бэкенд будет блокировать исключения до тех пор, пока не будут загружены отсутствующие файлы.
Если у вас возникла эта проблема, сначала убедитесь, что у вас установлен скрипт запуска:
Найдите и откройте файл рабочего пространства Xcode в каталоге iOS вашего проекта (
FLUTTER_PROJECT_NAME /ios/Runner.xcworkspace
).Определите, был ли добавлен сценарий запуска с названием
[firebase_crashlytics] Crashlytics Upload Symbols
в фазы сборки цели Runner.Информацию о том, существует ли сценарий запуска или отсутствует, см. в соответствующем разделе ниже.
Если этот скрипт запуска отсутствует , вы можете добавить его вручную:
Найдите идентификатор приложения Firebase для вашего приложения Apple. Вот два места, где можно найти этот идентификатор:
В консоли Firebase перейдите в свой
В каталоге верхнего уровня вашего проекта Flutter найдите файл
firebase_options.dart
. Идентификатор приложения Firebase для вашего приложения Apple обозначен какGOOGLE_APP_ID
.
Нажмите
> «Новая фаза сценария выполнения» .Убедитесь, что эта новая фаза «Запустить скрипт» является последней фазой сборки вашего проекта. В противном случае Crashlytics не сможет корректно обрабатывать dSYM-файлы.
Разверните новый раздел «Выполнить сценарий» .
В поле скрипта (расположенном под меткой 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 : ваш идентификатор приложения Apple в Firebase (не идентификатор пакета Apple)
Пример идентификатора приложения Apple Firebase:1:1234567890:ios:321abc456def7890
Вот два способа найти идентификатор приложения Firebase:
В файле
GoogleService-Info.plist
ваш идентификатор приложения — это значениеGOOGLE_APP_ID
; илиВ консоли Firebase перейдите в настройки проекта . Прокрутите вниз до карточки «Ваши приложения» , затем нажмите на нужное приложение Firebase, чтобы узнать его идентификатор.
- FIREBASE_APP_ID : ваш идентификатор приложения Apple в Firebase (не идентификатор пакета Apple)
В разделе «Входные файлы» добавьте пути к расположению следующих файлов:
${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)
Если скрипт запуска существует, обратитесь к руководству Apple по устранению неполадок с dSYM . Если вы решите загрузить файлы dSYM описанным способом, вам потребуется выполнить следующие дополнительные действия:
Найдите идентификатор приложения Firebase для вашего приложения Apple. Вот два места, где можно найти этот идентификатор:
В консоли Firebase перейдите в свой
В каталоге верхнего уровня вашего проекта Flutter найдите файл
firebase_options.dart
. Идентификатор приложения Firebase для вашего приложения Apple обозначен какGOOGLE_APP_ID
.
При запуске скрипта
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+ и плагин Flutter Crashlytics 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 CLI (версии 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 .