最近,我们已将我们组织的Crashlytics帐户升级为Fabric,并且我尝试在现有应用中使用新的Fabric SDK替换旧的Crashlytics SDK。我已经关注了the migration instructions,并且它在很大程度上是无痛的,除了我在尝试编译时现在收到构建错误。导致错误的问题是引导程序调用:
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插件:
答案 0 :(得分:26)
事实证明,旧的Crashlytics JAR仍以某种方式隐藏在我的libs
文件夹中,删除后,此错误不再存在。
我觉得有些愚蠢,但我会留下来帮助任何遇到同样问题的未来Google员工。 :)
答案 1 :(得分:1)
我发现@TreKing在评论中提到了什么。升级/迁移无法从我的app/build.gradle
文件中删除以前的依赖项。查找compile 'com.crashlytics.android:crashlytics:1.1.13'
之类的旧条目并将其删除。