2017-04-07 173 views
2

我一直在使用一个整洁的库来处理力接近崩溃:使用自定义崩溃处理与火力地堡安装

https://github.com/Ereza/CustomActivityOnCrash

它已经伟大的工作,直到我决定火力地堡通知添加到我的应用程序。我只选择了通知,因此我只添加了以下依赖性:

compile 'com.google.firebase:firebase-messaging:10.0.1' 

出于某种原因,火力地堡崩溃报告也被初始化,因为自定义崩溃处理看到的它,甚至会显示以下信息:

E/CustomActivityOnCrash: IMPORTANT WARNING! You already have an UncaughtExceptionHandler, 
are you sure this is correct? If you use ACRA, Crashlytics or similar libraries, 
you must initialize them AFTER CustomActivityOnCrash! Installing anyway, but your 
original handler will not be called. 

我的自定义崩溃处理是我的(应用)初始化的第一件事onCreate()方法,所以我看不出哪里或如何防止火力地堡崩溃加载报告/初始化本身。

任何帮助将不胜感激!

+1

贵logcat的输出应用程序启动时包含任何与“FirebaseCrash”相关的消息?当我运行没有FirebaseCrash的应用时,我看到'D/FirebaseApp:com.google.firebase.crash.FirebaseCrash未链接。跳过初始化“。当FirebaseCrash存在时,我会看到“I/FirebaseCrash:FirebaseCrash报告已初始化”。 –

+0

等待我现在看到了这个:I/FirebaseCrashApiImpl:由ClassLoader p创建的FirebaseCrashApiImpl [DexPathList [..... I/FirebaseCrash:FirebaseCrash报告初始化com.google ..... – buradd

回答

1

我发现我的回答感谢@ BobSnyder的评论 - 它使我搜索,找到这个以前的提问/回答:

How to disable default Firebase crash reporting?

,最终我用这个答案来解决我的问题:

If you want to disable the Firebase Analytics Crash Reporting, use the below 
code inside app.gradle file. 

configurations { 
    all*.exclude group: 'com.google.firebase', module: 'firebase-crash' 
} 
1

我是该图书馆的开发人员。版本高达1.5.0会导致Firebase崩溃报告停止工作。该应用不会崩溃,但由Firebase内部设置的原始UncaughtExceptionHandler永远不会被调用,因此您的Firebase控制台中不会收到崩溃数据。

发生这种情况即使CustomActivityOnCrash.install()被称为你的Application类的第一线,因为火力地堡初始化其UncaughtExceptionHandler作为一个供应商,因此结束了Application对象实例化之前执行。

该库的2.0.0版通过使用与Firebase(使用提供程序)相同的过程来修复此问题,但使用更高的initOrder,因此它在Firebase之前执行。

更新你的依赖,使其按预期工作(但是,要注意的API的变化,因为2.x版本是不是1.x的代码兼容):

dependencies { 
    compile 'cat.ereza:customactivityoncrash:2.0.0' 
}