Метод Crashlytics.logException, создающий недопустимое исключение состояния. Не в состоянии собрать нефатальные проблемы для некоторых видов деятельности - PullRequest
0 голосов
/ 09 апреля 2019

Мое приложение использует вышеуказанную функцию Firebase Crashlytics, но я столкнулся со странной проблемой. Недавно в игровом магазине моего приложения произошла ошибка - исключение (см. Прикрепленное фото). Crash Description Соответствующий код в этом месте выглядит следующим образом:

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_my_sites)
        setSupportActionBar(findViewById(R.id.my_toolbar))

        init()
        try{
            loadSitesSetAdapter()
        } catch (e:NullPointerException){
            Crashlytics.logException(e) // this is line 55 as crash
            finish()
//            startActivity(Intent(this,MainActivity::class.java))
        }

Инициализация Fabric в моем приложении выглядит следующим образом:

на уровне приложения, у меня есть:

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    debug {
        // Disable fabric build ID generation for debug builds
        ext.enableCrashlytics = false
    }
}

В основной деятельности у меня есть следующее:

val crashlyticsKit = Crashlytics.Builder()
                                    .core(CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build())
                                    .build();

    // Initialize Fabric with the debug-disabled crashlytics.
    Fabric.with(this,crashlyticsKit)

и последнее, но не менее важное: моя зависимость в файле Gradle выглядит следующим образом:

// Crashlytics
implementation('com.crashlytics.sdk.android:crashlytics:2.9.8@aar') {
    transitive = true;
}

Есть ли что-то очевидное, чего мне здесь не хватает? Помогите пожалуйста

1 Ответ

1 голос
/ 10 апреля 2019

Ткань должна быть инициализирована, прежде чем ее можно будет использовать в приложении. Где вы звоните Crashlytics.logException(e), это сделано до линии Fabric.with(this,crashlyticsKit)? Если нет, то вам нужно инициализировать Fabric, прежде чем вы сможете использовать любой из его методов.

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

См. Параграф о начале работы здесь: https://docs.fabric.io/android/fabric/overview.html#manual-setup

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...