Android 如何修复此CrashlyticsMissingDependencyException异常?

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

我使用最新的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-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" />