Google is committed to advancing racial equity for Black communities. See how.
Эта страница была переведа с помощью Cloud Translation API.
Switch to English

Получить отчеты о сбоях Android NDK

Если ваше приложение Android содержит собственные библиотеки , вы можете включить полную трассировку стека и подробные отчеты о сбоях для вашего собственного кода из Firebase Crashlytics с несколькими небольшими обновлениями конфигурации сборки вашего приложения. В этом руководстве описывается, как настроить отчеты о сбоях с помощью нового SDK Firebase Crashlytics.

Прежде чем вы начнете

Для начала настройте Crashlytics с помощью Firebase Crashlytics SDK.

Шаг 1. Обновите конфигурацию Gradle

В build.gradle уровня build.gradle добавьте зависимость времени выполнения Crashlytics NDK:

apply plugin: 'com.android.application'
apply plugin: 'com.google.firebase.crashlytics'

dependencies {
    // ...

    // Add the Crashlytics NDK dependency (if you have the
    // Firebase Crashlytics dependency, replace it).
    implementation 'com.google.firebase:firebase-crashlytics:17.2.1'
    implementation 'com.google.firebase:firebase-crashlytics-ndk:17.2.1'
}

// …
android {
    // ...
    buildTypes {
        release {
            // Add this extension
            firebaseCrashlytics {
                // Enable processing and uploading of native symbols to Crashlytics
                // servers. By default, this is disabled to improve build speeds.
                // This flag must be enabled to see properly-symbolicated native
                // stack traces in the Crashlytics dashboard.
                nativeSymbolUploadEnabled true
            }
        }
    }
}

Шаг 2. Включите загрузку собственных символов

Для создания читаемых трассировок стека при сбоях NDK Crashlytics необходимо знать о символах в ваших собственных двоичных файлах. Наш плагин Gradle включает задачу uploadCrashlyticsSymbolFile BUILD_VARIANT для автоматизации этого процесса (чтобы получить доступ к этой задаче, убедитесь, что для параметра nativeSymbolUploadEnabled установлено значение true).

Чтобы имена методов отображались в ваших трассировках стека, вы должны явно вызывать задачу uploadCrashlyticsSymbolFile BUILD_VARIANT после каждой сборки вашей библиотеки NDK. Например:

>./gradlew app:assembleBUILD_VARIANT\
           app:uploadCrashlyticsSymbolFileBUILD_VARIANT

Шаг 3 (необязательно): загрузите символы для внешних зависимостей

Наша задача загрузки символов предполагает, что вы создаете собственные библиотеки как часть сборки Gradle, используя стандартные инструменты сборки NDK, такие как CMake. Если у вас есть встроенные собственные библиотеки или вы используете настраиваемый процесс сборки NDK в Gradle, вам может потребоваться явно указать путь к вашим разделенным и незарезанным библиотекам. Расширение firebaseCrashlytics предоставляет для этого свойства: strippedNativeLibsDir и unstrippedNativeLibsDir .

// …
android {
    // ...
    buildTypes {
        release {
            firebaseCrashlytics {
                nativeSymbolUploadEnabled true
                strippedNativeLibsDir ‘path/to/stripped/parent/dir’
                unstrippedNativeLibsDir ‘path/to/unstripped/parent/dir’
            }
        }
    }
}

Наш плагин предполагает, что библиотеки расположены в подкаталогах, зависящих от архитектуры, в указанных каталогах, и что соответствующие пары разделенных / не разделенных библиотек имеют идентичные пути в этом каталоге. Например:

strippedNativeLibsDir/
 +- x86/
      |
      +- libfoo.so
      +- libbar.so
 +- arm64/
      |
      +- libfoo.so
      +- libbar.so

unstrippedNativeLibsDir/
 +- x86/
      |
      +- libfoo.so
      +- libbar.so
 +- arm64/
      |
      +- libfoo.so
      +- libbar.so

Если ваша система сборки не придерживается приведенной выше схемы структуры / именования, вручную создайте эту структуру на локальном диске перед uploadCrashlyticsSymbolFileBUILD_VARIANT задачи uploadCrashlyticsSymbolFileBUILD_VARIANT .

Шаг 4 (необязательно): настройте отчеты о сбоях NDK

При желании вы можете включить заголовок crashlytics.h в свой код C ++, чтобы добавить метаданные в отчеты о сбоях NDK, такие как журналы, настраиваемые ключи и идентификаторы пользователей. crashlytics.h доступен как библиотека C ++ только для заголовков в репозитории Firebase Android SDK на GitHub . Прочтите комментарии в файле заголовка для получения инструкций по использованию API-интерфейсов NDK C ++.

Шаг 5. Просмотрите отчеты о сбоях

Убедитесь, что Crashlytics правильно сообщает о сбоях NDK, создавая приложение, загружая символы и вызывая собственный сбой. Вам нужно будет перезапустить приложение после сбоя, чтобы Crashlytics отправил отчет. Вы должны увидеть сбой в консоли Firebase в течение нескольких минут.

Исправление проблем