CrashlyticsMissingDependencyException

我一直在使用最新的Crashlytics(Fabric整合)。 但是最近我遇到了由于缺less依赖关系而导致的下面的崩溃错误,虽然我没有改变任何关于Crashlyticsconfiguration。

任何想法?

02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . 02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . | | 02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . | | 02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . | | 02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . \ | | / 02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . \ / 02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . \ / 02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . \/ 02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . 02-08 22:18:00.935 18887-18887/? E/Fabric﹕ 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. 02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . 02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . /\ 02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . / \ 02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . / \ 02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . / | | \ 02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . | | 02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . | | 02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . | | 02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . 02-08 22:18:00.935 18887-18887/? E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: com.example.android.staging, PID: 18887 java.lang.RuntimeException: Unable to create application com.example.android.App: io.fabric.sdk.android.services.concurrency.UnmetDependencyException: com.crashlytics.android.CrashlyticsMissingDependencyException: 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.handleBindApplication(ActivityThread.java:4734) at android.app.ActivityThread.access$1600(ActivityThread.java:171) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1357) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:157) at android.app.ActivityThread.main(ActivityThread.java:5506) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081) at dalvik.system.NativeStart.main(Native Method) 

现在唯一的解决方法,如果你真的需要发布你的应用程序(像我),然后更改dynamic版本号为静态:

 [...] classpath 'io.fabric.tools:gradle:1.14.4' [...] compile('com.crashlytics.sdk.android:crashlytics:2.2.0@aar') { transitive = true } [...] 

编辑:

织物sdk的更新版本已经发布,你可以通过改变这一行来得到它:

 classpath 'io.fabric.tools:gradle:1.15.2' 

在我实际安装Fabric / Crashlytics之前,我添加了以下代码:

 debug { ext.enableCrashlytics = false } 

在Crashlytics第一次运行之前删除它解决了这个问题。 第一次运行后,问题不再发生。

看起来像指定插件版本为:

classpath 'io.fabric.tools:gradle:1.+'

拿起1.15.1,这有问题。

指定主要和次要1.14似乎是稳定的:

classpath 'io.fabric.tools:gradle:1.14.+'

更新插件后,我有同样的问题。 解决需要从AndroidManifest.xml中删除:

 <meta-data android:name="com.crashlytics.ApiKey" android:value="API_SECRET_KEY" /> 

并添加到fabric.properties中:

 apiSecret=API_SECRET_KEY apiKey=YOUR_SECRET_KEY 

更新:

现在,你必须使用:

  <meta-data android:name="io.fabric.ApiKey" android:value="API_KEY" /> 

迈克从Crashlytics这里。 我们发布了一个更新的版本 – 1.15.2 – 今天早些时候,包括此行为的修复。 如果你运行:

 ./gradlew assemble --refresh-dependencies 

这将拉动最新版本。 你也可以在这里看到更多关于修复的细节。

如图所示,在debugging过程中使用禁用function

  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 {}}下

我把这个评论留在了gradle中

 apply plugin: 'io.fabric' 

需要取消注释

或者如果你没有它,添加它!

对我来说是因为dataBinding = true 。 将Fabric Gradle插件升级到1.21.0修复了以下问题: https ://twittercommunity.com/t/fabric-gradle-plugin-1-21-0-add-support-for-android-databinding-true/57474

修复我从官方来源

禁用debugging版本的Crashlytics

如果您不需要Crashlytics崩溃报告或beta版本的debugging版本,那么您可以通过完全禁用这两个步骤来安全地加速您的debugging版本:

首先,将此添加到您的应用程序的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` 

您只能使用以下代码在运行时禁用该套件以进行debugging构build:

 // 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); 

如果您不小心join了Crashlytics BuildConfig,也会发生这个问题 – 使用Android Studio / IntelliJ自动导入非常容易。

我input了

import com.crashlytics.android.core.BuildConfig;

而不是我自己的

import <package_name>.BuildConfig;

如果这有助于别人,我在将Crashlytics升级到Fabric时遇到了类似的问题。 在我的情况下,插件离开Crashlytics的2条线,我需要手动删除之前,它将工作。

在gradle文件中,在buildscript依赖项下,我不得不手动删除:

 classpath 'com.crashlytics.tools.gradle:crashlytics-gradle:1.16.0' 

另外,在依赖关系下,我不得不手动删除:

 compile 'com.crashlytics.android:crashlytics:1.1.13' 

可能是我迟到了回复。 但是,除了上述所有的答案之外,这可能还有另外一个原因

如果你想添加

 apply plugin:'io.fabric' 

这可能看起来很奇怪,但这会导致同样的问题

当我们使用IDE注册并添加Fabric窗口中的代码时,这是默认添加的,但是不小心它可以被删除。

确保添加apply plugin: 'io.fabric'到您的应用程序项目build.gradle 。 在我的情况下,我有一个共同的build.gradleapply plugin: 'io.fabric' 。 移动到应用程序项目解决了这个问题。

在我的情况下,我在“CommonLib”模块中使用了结构,该模块作为所有其他模块(包括应用程序)中的依赖项添加。 所以,我在buildscript {}块后添加了apply plugin: 'io.fabric' 。 所以,我把两个插件放在一起:

 apply plugin: 'com.android.library' apply plugin: 'io.fabric' 

问题解决了!

检查在build.gradle文件中crashlytics是否被禁用

  debug { ext.enableCrashlytics = false } 

反而使用

  debug { ext.enableCrashlytics = true }