Joh*_*ood 32 android firebase crashlytics
我为我的Android应用程序(使用Android studio 3.1.3)开始使用Firebase Crashlytics设置了Firebase Crashlytics .在我自己的设备和模拟器上,一切正常,我的崩溃在Firebase控制台中正确显示.到现在为止还挺好.
但是,我的一个应用用户发生了意外情况:
java.lang.IllegalStateException:在使用singleton()之前必须初始化Fabric
异常被抛出在另一个Activity中,而不是MainActivity.
我知道您可以通过调用手动执行此处所述的初始化.Fabric.with(this, new Crashlytics());但是,没有任何关于必须在上面提到的入门文章中手动初始化Crashlytics的说法.我期待这是自动完成的,因为我自己的所有测试运行良好.那么为什么对于一些用户来说Crashlytics设置正确而有些用户没有?
Gil*_*eig 29
您需要在应用程序的onCreate中初始化Crashlytics
import android.app.Application;
import com.crashlytics.android.Crashlytics;
import io.fabric.sdk.android.Fabric;
public class TestApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
Fabric.with(this, new Crashlytics());
}
}
Run Code Online (Sandbox Code Playgroud)
就我而言,以下检查有助于消除错误。
如果您在清单中找到以下代码,请将其设置为true或将其删除,因为默认情况下为true。
<meta-data
android:name="firebase_crashlytics_collection_enabled"
android:value="false" />
Run Code Online (Sandbox Code Playgroud)
此外柜面如果值是被拉从您的build.gradle,检查其buildType其并根据该考虑不调用任何Crashlytics功能buildType。
示例: build.gradle
android{
...
buildTypes {
debug{
manifestPlaceholders = [enableCrashReporting:"false"]
}
release {
manifestPlaceholders = [enableCrashReporting:"true"]
}
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您应该将Crashlytics调用包装如下:
if(!BuildConfig.DEBUG){
...
Crashlytics.setUserIdentifier(...)
...
}
Run Code Online (Sandbox Code Playgroud)
小智 5
如果你从 Fabric.io 迁移到 Firebase,肯定有一些行你需要从AndroidManifest.xml 中删除
<!-- Fabric.io Analytics key -->
<meta-data
android:name="io.fabric.ApiKey"
android:value="49yy995568140ee22uio128e00450bd99603fd43" />
Run Code Online (Sandbox Code Playgroud)
使用这些行,Firebase 无法正确初始化 Crashlytics 插件。
| 归档时间: |
|
| 查看次数: |
10400 次 |
| 最近记录: |