无法获得提供者com.crashlytics.android.CrashlyticsInitProvider

时间:2018-07-25 10:45:43

标签: android firebase gradle android-gradle crashlytics

implementation 'com.google.firebase:firebase-core:16.0.1'classpath 'com.google.gms:google-services:4.0.1'之后

启动应用程序时,我开始出现以下错误:

  

致命异常:主要                     进程:com.fentury.android,PID:10771                     java.lang.RuntimeException:无法获取提供程序com.crashlytics.android.CrashlyticsInitProvider:io.fabric.sdk.android.services.concurrency.UnmetDependencyException:此应用程序依赖于Crashlytics。请通过https://fabric.io/sign_up注册访问权限,                     安装一个Android构建工具,并请团队成员邀请您加入此应用的组织。                         在android.app.ActivityThread.installProvider(ActivityThread.java:5856)                         在android.app.ActivityThread.installContentProviders(ActivityThread.java:5445)                         在android.app.ActivityThread.handleBindApplication(ActivityThread.java:5384)                         在android.app.ActivityThread.-wrap2(ActivityThread.java)                         在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1545)                         在android.os.Handler.dispatchMessage(Handler.java:102)                         在android.os.Looper.loop(Looper.java:154)                         在android.app.ActivityThread.main(ActivityThread.java:6119)                         在java.lang.reflect.Method.invoke(本机方法)                         在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:886)                         在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)                      造成原因:io.fabric.sdk.android.services.concurrency.UnmetDependencyException:此应用依赖于Crashlytics。请通过https://fabric.io/sign_up注册访问权限,                     安装一个Android构建工具,并请团队成员邀请您加入此应用的组织。                         在com.crashlytics.android.core.CrashlyticsCore.onPreExecute(CrashlyticsCore.java:235)                         在com.crashlytics.android.core.CrashlyticsCore.onPreExecute(CrashlyticsCore.java:209)                         在io.fabric.sdk.android.InitializationTask.onPreExecute(InitializationTask.java:44)                         在io.fabric.sdk.android.services.concurrency.AsyncTask.executeOnExecutor(AsyncTask.java:611)                         在io.fabric.sdk.android.services.concurrency.PriorityAsyncTask.executeOnExecutor(PriorityAsyncTask.java:43)                         在io.fabric.sdk.android.Kit.initialize(Kit.java:69)                         在io.fabric.sdk.android.Fabric.initializeKits(Fabric.java:440)                         在io.fabric.sdk.android.Fabric.init(Fabric.java:384)                         在io.fabric.sdk.android.Fabric.setFabric(Fabric.java:342)                         在io.fabric.sdk.android.Fabric.with(Fabric.java:313)                         在com.crashlytics.android.CrashlyticsInitProvider.onCreate(CrashlyticsInitProvider.java:27)                         在android.content.ContentProvider.attachInfo(ContentProvider.java:1751)                         在android.content.ContentProvider.attachInfo(ContentProvider.java:1726)                         在android.app.ActivityThread.installProvider(ActivityThread.java:5853)                           ...还有10个

还添加了AndroidManifest.xml的下一行:

<meta-data android:name="firebase_crash_collection_enabled" android:value="false" />

5 个答案:

答案 0 :(得分:7)

这有助于解决我的问题

<meta-data
            android:name="firebase_crashlytics_collection_enabled"
            android:value="false" />

并删除此内容:

<meta-data android:name="firebase_crash_collection_enabled" android:value="false" />

答案 1 :(得分:2)

我发现,按照Firebase Crashlytics docs上的说明进行操作后,您唯一需要做的就是将Fabric插件应用到您的应用构建文件中(该步骤实际上是文档中所缺少的!)。

在您的应用程序级别build.gradle中添加以下内容

// Apply the Fabric plugin
apply plugin: 'io.fabric'

答案 2 :(得分:0)

如果您要使用其他Firebase的API,建议您设置 crashlytics
如Firebase的crashlytics页面here所述。

显然,在此之前,您需要为您的应用设置firebase
并通过Firebase控制台创建项目。
我相信您已经做到了。

这是因为我在这两个页面(结构和Firebase)上看到了crashlytics设置的细微差别。
就像在Firebase的crashlytics上一样:
在应用程序级别gradle中

dependencies {
    // ...
    implementation 'com.crashlytics.sdk.android:crashlytics:2.9.3'
}

在织物上

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

如果您使用Firebase,则不需要通过清单添加Fabric api密钥,我认为它与Firebase密钥有某种联系(只是猜测)。
我是根据经验说的,如果我错了,任何人都可以纠正我。

答案 3 :(得分:0)

我也遇到了这个问题,这是由于使用不正确的Fabric.with()初始化程序进行调试构建引起的。

请勿使用:

// Set up Crashlytics, disabled for debug builds
Crashlytics crashlyticsKit = new Crashlytics.Builder()
        .core(new CrashlyticsCore.Builder()
                .disabled(BuildConfig.DEBUG)
                .build())
        .build();

// Initialize Fabric with the debug-disabled Crashlytics
Fabric.with(this, crashlyticsKit, new Crashlytics()); // WRONG!

代替使用:

// Set up Crashlytics, disabled for debug builds
Crashlytics crashlyticsKit = new Crashlytics.Builder()
        .core(new CrashlyticsCore.Builder()
                .disabled(BuildConfig.DEBUG)
                .build())
        .build();

// Initialize Fabric with the debug-disabled Crashlytics
Fabric.with(this, crashlyticsKit); // Correct initializer!

文档:https://docs.fabric.io/android/crashlytics/build-tools.html#disable-crashlytics-for-debug-builds

答案 4 :(得分:0)

在我的情况下,我正在为Android 4.4兼容性构建应用程序,但该应用程序未在Multidex支持中构建。我通过按照以下步骤为Android 4.4启用Multidex来解决了问题,该问题消失了:
Enable multidex for apps with over 64K methods

大卫