繁体   English   中英

无法获取提供程序 com.crashlytics.android.CrashlyticsInitProvider

[英]Unable to get provider com.crashlytics.android.CrashlyticsInitProvider

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) at android.app.ActivityThread.main(ActivityThread.java:6119) at java.lang.reflect.Method.invoke(Native Method) at 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) at io.fabric.sdk.android.services.concurrency.AsyncTask.executeOnExecutor(AsyncTask.java:611) at 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) at io.fabric.sdk.android.Fabric.setFabric(Fabric.java:342) at io.fabric.sdk.android.Fabric.with(Fabric.java:313) at com .crashlytics.android.CrashlyticsInitProvider.onCreate(CrashlyticsInitProvider.java:27) at android.content.ContentProvider.attachInfo(ContentProvider.java:1751) at android.content.ContentProvider.attachInfo(ContentProvider.java:1726) at android.app。 ActivityThread.installProvider(ActivityThread.java:5853) ... 10 更多

还在AndroidManifest.xml下一行添加:

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

这有助于解决我的问题

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

并删除这个:

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

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

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

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

编辑:这一步似乎最近已添加到文档中(请参阅第 2 步/第 2 部分)。

如果您打算使用其他 Firebase 的 API,我建议您设置crashlytics
如 Firebase 的 crashlytics 页面所述,这里

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

这是因为我在这两个页面(fabric 和 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 一起使用,则不需要通过清单添加结构 api 密钥,我认为它以某种方式与 firebase 密钥连接(只是猜测)。
我是根据我的经验这么说的,如果我有什么不对的地方,任何人都可以纠正我。

我也遇到了这个问题,这是由于对调试版本使用不正确的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

就我而言,我正在为 android 4.4 兼容性构​​建应用程序,该应用程序没有内置 Multidex 支持。 我通过以下步骤为 android 4.4 启用 Multidex 解决了问题,问题就消失了:
为具有超过 64K 方法的应用程序启用 multidex

大卫

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM