104

我一直在使用最新的 Crashlytics(Fabric 集成)一段时间。但是最近我由于缺少依赖项而遇到了以下崩溃错误,尽管我没有更改任何有关 Crashlytics 配置的内容。

任何想法?

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)
4

17 回答 17

96

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

debug {
    ext.enableCrashlytics = false
}

在使用 Crashlytics 首次运行之前将其删除可以解决问题。第一次运行后问题不再出现。

于 2015-02-18T07:33:09.000 回答
27

我在 gradle 中将此注释掉了

apply plugin: 'io.fabric'

需要取消注释

或者,如果您没有,请添加它!

于 2016-04-08T16:44:47.213 回答
22

目前唯一的解决方法是,如果你真的需要发布你的应用程序(像我一样),将动态版本号更改为静态版本号:

[...]

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'
于 2015-02-09T17:47:04.183 回答
14

似乎将插件版本指定为:

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

拿起有问题的 1.15.1。

将major 和minor 指定为previous1.14似乎是稳定的:

classpath 'io.fabric.tools:gradle:1.14.+'
于 2015-02-09T18:18:49.457 回答
13

更新插件后我遇到了同样的问题。解决需要从 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" />
于 2015-07-09T04:53:09.067 回答
13

如果您在调试期间使用禁用功能,如图所示

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

于 2016-07-07T08:43:26.080 回答
11

来自 Crashlytics 的迈克在这里。我们今天早些时候发布了一个更新版本 - 1.15.2 - 其中包括对此行为的修复。如果你运行:

./gradlew assemble --refresh-dependencies

这将拉入最新版本。您还可以在此处查看有关修复的更多详细信息。

于 2015-02-10T19:43:22.333 回答
5

为我修复来自官方来源

为调试构建禁用 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);
于 2017-01-24T18:01:45.660 回答
5

如果您不小心包含了 Crashlytics BuildConfig,也会出现此问题 - 使用 Android Studio/IntelliJ 自动导入非常容易。

我进口的

import com.crashlytics.android.core.BuildConfig;

而不是我自己的

import <package_name>.BuildConfig;

于 2017-06-05T09:22:18.923 回答
4

对我来说,这是因为dataBinding = true。将 fabric gradle 插件升级到 1.21.0 解决了这个问题:https ://twittercommunity.com/t/fabric-gradle-plugin-1-21-0-add-support-for-android-databinding-true/57474

于 2015-12-04T17:09:44.967 回答
3

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

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

并且问题解决了!

于 2017-06-23T06:01:36.167 回答
1

确保添加apply plugin: 'io.fabric'到您的应用程序项目build.gradle中。就我而言,我build.gradleapply plugin: 'io.fabric'. 将其移至应用程序项目解决了该问题。

于 2017-06-11T10:33:40.153 回答
0

如果这对其他人有帮助,我在将 Crashlytics 升级到 Fabric 时遇到了类似的问题。就我而言,该插件从 Crashlytics 中留下了 2 行,我需要手动删除它们才能正常工作。

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

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

此外,在依赖项下,我必须手动删除:

compile 'com.crashlytics.android:crashlytics:1.1.13'
于 2015-06-29T17:48:35.350 回答
0

删除应用程序图标固定 Crashylitics,whaaat?

我根据入职教程完成了所有工作,使用了最新版本等。

只是浪费了一个小时试图弄清楚这一点。事实证明,有人认为读取应用程序图标的包名称而不是在context.packageName给定上下文的情况下获取应用程序资源是个好主意。它是在这种方法中完成的:

io.fabric.sdk.android.services.common.CommonUtils#getResourcePackageName

如果您碰巧使用了不在 APK 内的图标,这显然会爆炸,例如:android:icon="@android:drawable/sym_def_app_icon". 这在当时可能是个好主意,想知道他们试图解决什么奇怪的错误?!

于 2018-11-02T15:16:35.950 回答
0

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

    debug {
        ext.enableCrashlytics = false
    }

而是使用

    debug {
        ext.enableCrashlytics = true
    }
于 2017-04-26T10:09:39.573 回答
0

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

如果您错过添加

apply plugin:'io.fabric'

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

默认情况下,当我们使用 IDE 从 Fabric 窗口中注册并添加代码时,fabric 会添加它,但不小心会被删除。

于 2017-05-11T04:35:18.370 回答
-1
<meta-data
    android:name="firebase_crashlytics_collection_enabled"
    android:value="false" /> 

将其添加到AndroidManifest.xml.

于 2018-12-26T11:51:12.620 回答