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.gradle
与apply 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 }