无法获取提供商 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'
之后
我在启动应用程序时开始收到以下错误:
FATAL EXCEPTION: main
Process: com.fentury.android, PID: 10771
java.lang.RuntimeException: Unable to get provider com.crashlytics.android.CrashlyticsInitProvider: io.fabric.sdk.android.services.concurrency.UnmetDependencyException: This app relies on Crashlytics. Please sign up for access at https://fabric.io/sign_up,
install an Android build tool and ask a team member to invite you to this app's organization.
at android.app.ActivityThread.installProvider(ActivityThread.java:5856)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:5445)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5384)
at android.app.ActivityThread.-wrap2(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1545)
at android.os.Handler.dispatchMessage(Handler.java:102)
at 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)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
Caused by: io.fabric.sdk.android.services.concurrency.UnmetDependencyException: This app relies on Crashlytics. Please sign up for access at https://fabric.io/sign_up,
install an Android build tool and ask a team member to invite you to this app's organization.
at com.crashlytics.android.core.CrashlyticsCore.onPreExecute(CrashlyticsCore.java:235)
at com.crashlytics.android.core.CrashlyticsCore.onPreExecute(CrashlyticsCore.java:209)
at 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)
at io.fabric.sdk.android.Kit.initialize(Kit.java:69)
at io.fabric.sdk.android.Fabric.initializeKits(Fabric.java:440)
at 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 more
也在AndroidManifest.xml
下一行添加:
<meta-data android:name="firebase_crash_collection_enabled" android:value="false" />
如果您打算使用其他 Firebase 的 API,我建议设置 crashlytics
正如 Firebase 的 crashlytics 页面所述,here。
显然在此之前,您需要为您的应用设置 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,你不需要通过清单添加 fabric api 密钥,我认为它以某种方式与 firebase 密钥连接(只是猜测)。
我是根据我的经验说的,如果我有什么不对的地方,请大家指正。
这有助于解决我的问题
<meta-data
android:name="firebase_crashlytics_collection_enabled"
android:value="false" />
并删除这个:
<meta-data android:name="firebase_crash_collection_enabled" android:value="false" />
我发现按照 Firebase Crashlytics docs 上的说明进行操作后,您唯一需要做的就是在您的应用程序构建文件中应用 fabric 插件(文档中实际上缺少这一步!)。
在您的应用级别 build.gradle 添加以下内容
// Apply the Fabric plugin
apply plugin: 'io.fabric'
编辑:该步骤似乎最近已添加到文档中(参见第 2 步/第 2 部分)。
我 运行 也遇到了这个问题,它是由于使用不正确的 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 解决了问题,问题消失了:
Enable multidex for apps with over 64K methods
大卫
在 implementation 'com.google.firebase:firebase-core:16.0.1'
和 classpath 'com.google.gms:google-services:4.0.1'
我在启动应用程序时开始收到以下错误:
FATAL EXCEPTION: main Process: com.fentury.android, PID: 10771 java.lang.RuntimeException: Unable to get provider com.crashlytics.android.CrashlyticsInitProvider: io.fabric.sdk.android.services.concurrency.UnmetDependencyException: This app relies on Crashlytics. Please sign up for access at https://fabric.io/sign_up, install an Android build tool and ask a team member to invite you to this app's organization. at android.app.ActivityThread.installProvider(ActivityThread.java:5856) at android.app.ActivityThread.installContentProviders(ActivityThread.java:5445) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5384) at android.app.ActivityThread.-wrap2(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1545) at android.os.Handler.dispatchMessage(Handler.java:102) at 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) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) Caused by: io.fabric.sdk.android.services.concurrency.UnmetDependencyException: This app relies on Crashlytics. Please sign up for access at https://fabric.io/sign_up, install an Android build tool and ask a team member to invite you to this app's organization. at com.crashlytics.android.core.CrashlyticsCore.onPreExecute(CrashlyticsCore.java:235) at com.crashlytics.android.core.CrashlyticsCore.onPreExecute(CrashlyticsCore.java:209) at 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) at io.fabric.sdk.android.Kit.initialize(Kit.java:69) at io.fabric.sdk.android.Fabric.initializeKits(Fabric.java:440) at 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 more
也在AndroidManifest.xml
下一行添加:
<meta-data android:name="firebase_crash_collection_enabled" android:value="false" />
如果您打算使用其他 Firebase 的 API,我建议设置 crashlytics
正如 Firebase 的 crashlytics 页面所述,here。
显然在此之前,您需要为您的应用设置 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,你不需要通过清单添加 fabric api 密钥,我认为它以某种方式与 firebase 密钥连接(只是猜测)。
我是根据我的经验说的,如果我有什么不对的地方,请大家指正。
这有助于解决我的问题
<meta-data
android:name="firebase_crashlytics_collection_enabled"
android:value="false" />
并删除这个:
<meta-data android:name="firebase_crash_collection_enabled" android:value="false" />
我发现按照 Firebase Crashlytics docs 上的说明进行操作后,您唯一需要做的就是在您的应用程序构建文件中应用 fabric 插件(文档中实际上缺少这一步!)。
在您的应用级别 build.gradle 添加以下内容
// Apply the Fabric plugin
apply plugin: 'io.fabric'
编辑:该步骤似乎最近已添加到文档中(参见第 2 步/第 2 部分)。
我 运行 也遇到了这个问题,它是由于使用不正确的 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 解决了问题,问题消失了:
Enable multidex for apps with over 64K methods
大卫