Android 如何修复此CrashlyticsMissingDependencyException异常?
我使用最新的Crashlytics(Fabric integration)已经有一段时间了。但是最近,由于缺少依赖项,我遇到了以下崩溃错误,尽管我没有更改有关Crashlytics配置的任何内容 有什么想法吗Android 如何修复此CrashlyticsMissingDependencyException异常?,android,crashlytics,twitter-fabric,Android,Crashlytics,Twitter Fabric,我使用最新的Crashlytics(Fabric integration)已经有一段时间了。但是最近,由于缺少依赖项,我遇到了以下崩溃错误,尽管我没有更改有关Crashlytics配置的任何内容 有什么想法吗 02-08 22:18:00.93518887-18887/?E/织物﹕ . 02-08 22:18:00.935 18887-18887/? E/织物﹕ . | | 02-08 22:18:00.935 18887-18887/? E/织物﹕ . | | 02-0
02-08 22:18:00.93518887-18887/?E/织物﹕ .
02-08 22:18:00.935 18887-18887/? E/织物﹕ . | |
02-08 22:18:00.935 18887-18887/? E/织物﹕ . | |
02-08 22:18:00.935 18887-18887/? E/织物﹕ . | |
02-08 22:18:00.935 18887-18887/? E/织物﹕ . \ | | /
02-08 22:18:00.935 18887-18887/? E/织物﹕ . \ /
02-08 22:18:00.935 18887-18887/? E/织物﹕ . \ /
02-08 22:18:00.935 18887-18887/? E/织物﹕ . \/
02-08 22:18:00.935 18887-18887/? E/织物﹕ .
02-08 22:18:00.935 18887-18887/? E/织物﹕ 此应用程序依赖Crashlytics。请在以下网址注册访问:https://fabric.io/sign_up,
安装Android构建工具,并请团队成员邀请您加入此应用程序的组织。
02-08 22:18:00.935 18887-18887/? E/织物﹕ .
02-08 22:18:00.935 18887-18887/? E/织物﹕ . /\
02-08 22:18:00.935 18887-18887/? E/织物﹕ . / \
02-08 22:18:00.935 18887-18887/? E/织物﹕ . / \
02-08 22:18:00.935 18887-18887/? E/织物﹕ . / | | \
02-08 22:18:00.935 18887-18887/? E/织物﹕ . | |
02-08 22:18:00.935 18887-18887/? E/织物﹕ . | |
02-08 22:18:00.935 18887-18887/? E/织物﹕ . | |
02-08 22:18:00.935 18887-18887/? E/织物﹕ .
02-08 22:18:00.935 18887-18887/? E/AndroidRuntime﹕ 致命异常:主
进程:com.example.android.staging,PID:18887
java.lang.RuntimeException:无法创建应用程序com.example.android.App:io.fabric.sdk.android.services.concurrency.UnmetDependencyException:com.crashlytics.android.CrashlyticsMissingDependencyException:
此应用程序依赖Crashlytics。请在以下网址注册访问:https://fabric.io/sign_up,
安装Android构建工具,并请团队成员邀请您加入此应用程序的组织。
位于android.app.ActivityThread.handleBindApplication(ActivityThread.java:4734)
在android.app.ActivityThread.access$1600(ActivityThread.java:171)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1357)
位于android.os.Handler.dispatchMessage(Handler.java:102)
位于android.os.Looper.loop(Looper.java:157)
位于android.app.ActivityThread.main(ActivityThread.java:5506)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:515)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:1265)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
在dalvik.system.NativeStart.main(本机方法)
如果你真的需要发布你的应用程序(像我一样),现在唯一的解决办法是将动态版本号更改为静态版本号:
[...]
classpath 'io.fabric.tools:gradle:1.14.4'
[...]
compile('com.crashlytics.sdk.android:crashlytics:2.2.0@aar') {
transitive = true
}
[...]
编辑:
Fabric SDK的更新版本已经发布;您可以通过将行更改为:
classpath 'io.fabric.tools:gradle:1.26.1'
似乎要将插件版本指定为:
classpath 'io.fabric.tools:gradle:1.+'
拾取1.15.1,它有问题
将大调和小调指定为上一个1.14
似乎比较稳定:
classpath 'io.fabric.tools:gradle:1.14.+'
来自Crashlytics的Mike。今天早些时候,我们发布了一个更新版本-1.15.2,其中包含了针对此行为的修复。如果您运行:
./gradlew assemble --refresh-dependencies
这将引入最新版本。您还可以看到更多信息在实际安装Fabric/Crashlytics之前,我添加了以下代码:
debug {
ext.enableCrashlytics = false
}
在第一次使用Crashlytics运行之前将其删除解决了问题。第一次运行后,问题不再出现。如果这对其他人有帮助,我在将Crashlytics升级到Fabric时也遇到了类似的问题。在我的例子中,这个插件在Crashlytics中留下了两行代码,我需要手动删除它们才能正常工作 在gradle文件中的buildscript依赖项下,我必须手动删除:
classpath 'com.crashlytics.tools.gradle:crashlytics-gradle:1.16.0'
compile 'com.crashlytics.android:crashlytics:1.1.13'
此外,在依赖项下,我必须手动删除:
classpath 'com.crashlytics.tools.gradle:crashlytics-gradle:1.16.0'
compile 'com.crashlytics.android:crashlytics:1.1.13'
更新插件后我也遇到了同样的问题。 要解决需要从AndroidManifest.xml中删除的问题,请执行以下操作:
<meta-data
android:name="com.crashlytics.ApiKey"
android:value="API_SECRET_KEY" />
更新:
现在,您必须使用:
<meta-data
android:name="io.fabric.ApiKey"
android:value="API_KEY" />
对我来说,这是因为数据绑定=true
。将fabric gradle插件升级到1.21.0修复了这个问题:我在gradle中对此进行了注释
apply plugin: 'io.fabric'
需要取消注释吗
或者,如果您没有,请添加它 如果在调试期间使用禁用功能,如图所示
Crashlytics crashlyticsKit = new Crashlytics.Builder()
.core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build())
.build();
Fabric.with(this, crashlyticsKit);
更新crashlytics的版本时会发生什么
Fabric.with(this, crashlyticsKit);
转向
Fabric.with(this,new Crashlytics());
所以一定要把它改回crashlyticskit。如果操作正确且错误仍然出现,请确保
debug {
ext.enableCrashlytics = false
}
在android下{buildtypes{}为我修复
从官方
禁用调试版本的Crashlytics
如果调试版本不需要Crashlytics崩溃报告或beta发行版,您可以通过以下两个步骤完全禁用插件来安全地加快调试版本:
首先,将此添加到应用程序的build.gradle:
android {
buildTypes {
debug {
// Disable fabric build ID generation for debug builds
ext.enableCrashlytics = false
...
接下来,在运行时禁用Crashlytics工具包。否则,Crashlytics工具包将抛出以下错误:
com.crashlytics.android.core.CrashlyticsMissingDependencyException:
This app relies on Crashlytics. Please sign up for access at https://fabric.io/sign_up`
只能使用以下代码在运行时禁用调试生成的工具包:
// 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);
检查build.gradle文件中是否禁用了crashlytics
debug {
ext.enableCrashlytics = false
}
改用
debug {
ext.enableCrashlytics = true
}
也许我来晚了。
但是,除了上述所有答案之外,还有一个原因可以导致这种情况
如果您没有添加
apply plugin:'io.fabric'
这可能看起来很奇怪,但这将导致同样的问题
默认情况下,当我们使用IDE从fabric窗口注册并添加代码时,fabric会添加此代码,但意外情况下,它可能会被删除。如果您意外包含Crashlytics BuildConfig,也会出现此问题-使用Android Studio/IntelliJ自动导入非常容易
<meta-data
android:name="firebase_crashlytics_collection_enabled"
android:value="false" />