从 Crashlytics SDK 迁移到 Fabric 后构建错误

Build error after migrating from Crashlytics SDK to Fabric

最近,我们已将我们组织的 Crashlytics 帐户升级到 Fabric,我正尝试在我们现有的应用程序中用新的 Fabric SDK 替换旧的 Crashlytics SDK。我已经按照 the migration instructions 进行操作,基本上没有任何痛苦,只是我现在在尝试编译时收到构建错误。导致错误的相关行是 bootstrap 调用:

Fabric.with(this, new Crashlytics());

返回的错误是:

Error:(55, 11) error: no suitable method found for with(MyActivity,Crashlytics)
method Fabric.with(Fabric) is not applicable
(actual and formal argument lists differ in length)
method Fabric.with(Context,Kit...) is not applicable
(argument type Crashlytics does not conform to vararg element type Kit)

显然,出于某种原因,new Crashlytics() 未被识别为 with(Context,Kit...) 方法的有效参数。

为了排除与方法调用的 vararg 性质特别相关的问题,我还尝试了多个工具包(例如 Fabric.with(this, new Crashlytics(), new MoPub())),但仍然返回完全相同的错误。

最后,我尝试将调用移动到我的 Application 子类的 onCreate() 方法,但这也没有帮助。


来自build.gradle的相关部分:

buildscript {
  repositories {
    maven { url 'https://maven.fabric.io/public' }
  }

  dependencies {
    classpath 'io.fabric.tools:gradle:1.+'
  }
}

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

repositories {
  maven { url 'https://maven.fabric.io/public' }
}

dependencies {
  compile fileTree(dir: 'libs', include: '*.jar')
  ...
  compile('com.crashlytics.sdk.android:crashlytics:2.2.1@aar') {
    transitive = true;
  }
}

我还验证了 Fabric 插件已正确安装并正常工作,并且不再安装旧的 Crashlytics 插件:

事实证明,旧的 Crashlytics JAR 不知何故仍隐藏在我的 libs 文件夹中,删除它后,此错误不再存在。

我觉得有点傻,但我会留下这个来帮助 运行 遇到同样问题的未来 Google 员工。 :)

我完全找到了@TreKing 在他的评论中提到的内容。 upgrade/migration 未能从我的 app/build.gradle 文件中删除以前的依赖项。查找像 compile 'com.crashlytics.android:crashlytics:1.1.13' 这样的旧条目并将其删除。