По умолчанию Firebase Crashlytics автоматически настраивает ваш проект Flutter для загрузки необходимых файлов символов, которые гарантируют, что отчеты о сбоях будут деобфускированы и удобочитаемы для человека.
К сожалению, бывают случаи, когда проект может быть настроен не полностью. В этом руководстве описывается, что делает автоматизация, и представлены первые шаги по отладке настройки вашего проекта.
платформы Apple
Проверьте свою конфигурацию для загрузки файлов dSYM.
Добавление плагина Crashlytics Flutter и запуск команды flutterfire configure
попытается добавить сценарий запуска в рабочую область Xcode вашего проекта, который находит и загружает необходимые файлы символов dSYM в Crashlytics . Без этих файлов вы увидите предупреждение «Отсутствует dSYM» на панели управления Crashlytics , а исключения будут удерживаться серверной частью до тех пор, пока недостающие файлы не будут загружены.
Если у вас возникла эта проблема, сначала убедитесь, что у вас установлен скрипт запуска:
Найдите и откройте файл рабочей области Xcode в каталоге iOS вашего проекта (
FLUTTER_PROJECT_NAME /ios/Runner.xcworkspace
).Определите, был ли добавлен сценарий запуска под названием
[firebase_crashlytics] Crashlytics Upload Symbols
в этапы сборки целевого объекта Runner.См. соответствующий раздел ниже, чтобы узнать, существует ли сценарий запуска или он не существует .
Скрипт запуска для автоматической загрузки dSYM не существует.
Если этот сценарий запуска не существует, вы можете добавить его вручную:
Найдите идентификатор приложения 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 : ваш идентификатор приложения Firebase Apple (а не идентификатор вашего пакета Apple).
Пример идентификатора приложения Firebase Apple:1:1234567890:ios:321abc456def7890
Хотите найти идентификатор приложения Firebase?
Вот два способа найти идентификатор приложения Firebase:
В файле
GoogleService-Info.plist
вашим идентификатором приложения является значениеGOOGLE_APP_ID
; илиВ консоли Firebase перейдите в настройки проекта . Прокрутите вниз до карточки «Ваши приложения» , затем нажмите нужное приложение Firebase, чтобы найти его идентификатор приложения.
- FIREBASE_APP_ID : ваш идентификатор приложения Firebase Apple (а не идентификатор вашего пакета 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)
Поймите, зачем нужны местоположения этих файлов.
Xcode ищет эти входные файлы в указанных местах, чтобы убедиться, что файлы сборки доступны для сценария запуска. Кроме того, если включена «песочница» пользовательских сценариев , Xcode разрешает сценарию запуска только доступ к файлам, указанным во входных файлах .
- Предоставление местоположения файлов dSYM вашего проекта позволяет Crashlytics обрабатывать dSYM.
- Предоставление местоположения встроенного файла
GoogleService-Info.plist
вашего приложения позволяет Crashlytics связать dSYM с вашим приложением Firebase. - Указание местоположения исполняемого файла вашего приложения позволяет сценарию запуска предотвратить повторную загрузку одного и того же 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
)
--split-debug-info
)--split-debug-info
(и, при необходимости, также флаг --obfuscate
), потребуются дополнительные шаги, чтобы показать читаемые трассировки стека для вашего приложения.
Андроид
Проверьте конфигурацию зависимостей
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
)
--split-debug-info
)--split-debug-info
(и, при необходимости, также флаг --obfuscate
), потребуются дополнительные шаги, чтобы показать читаемые трассировки стека для вашего приложения.
firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO /symbols
FIREBASE_APP_ID : идентификатор вашего приложения Firebase для Android (а не имя вашего пакета).
Пример идентификатора приложения Firebase для Android:1:567383003300:android:17104a2ced0c9b9b
Хотите найти идентификатор приложения Firebase?
Вот два способа найти идентификатор приложения Firebase:
В файле
google-services.json
вашим идентификатором приложения является значениеmobilesdk_app_id
; илиВ консоли Firebase перейдите в настройки проекта . Прокрутите вниз до карточки «Ваши приложения» , затем нажмите нужное приложение Firebase, чтобы найти его идентификатор приложения.
PATH/TO /symbols
: тот же каталог, который вы передаете флагу--split-debug-info
при сборке приложения.
Если проблемы не исчезнут, обратитесь к руководству для Android по устранению неполадок с запутанными отчетами .