我已经将firebase crashlytics lib和crashlytics gradle插件添加到我的项目中
classpath("com.google.firebase:firebase-crashlytics-gradle:2.3.0")
...
plugins {
...
id("com.google.firebase.crashlytics")
...
}
...
implementation("com.google.firebase:firebase-crashlytics:17.2.1")
implementation("com.google.firebase:firebase-analytics:17.5.0")
我使用为我的发布构建类型显式设置了mappingFileUploadEnabled
getByName("release").apply {
firebaseCrashlytics.mappingFileUploadEnabled = true
}
但不幸的是,映射文件并没有上传。我在firebase crashlytics控制台中验证了它——对于我的测试崩溃,stacktrace指向Unknown Source:55
。以下是我在gradle日志中发现的内容:
[DEBUG][com.google.firebase.crashlytics]映射文件上传已启用:false;id:00000000000000000000000000000000
所以我的mappingFileUploadEnabled
标志似乎没有效果
我需要做其他事情来上传映射文件吗?
我的项目中也没有firebaseUpload*ReleaseProguardMapping
任务。但不确定它是否应该被创建。
UPDATE
我尝试从头开始创建一个空的android项目,并在那里添加了firebase-crashlytics
。在那里它似乎可以工作,我可以看到为所有构建类型创建的uploadCrashlyticsMappingFile
任务。所以现在看起来firebase-crashlytics
gradle插件不能正确地为我的项目工作,也不能创建它应该创建的任务。有人知道为什么吗?
今天我了解到,如果以声明方式应用firebase-crashlytics
gradle插件,则使用plugins {}
块不会创建映射文件上载任务。为了使它发挥作用,我不得不使用遗留的apply(..)
函数强制应用插件。这就是我现在在项目中所拥有的:
apply(plugin = "com.google.firebase.crashlytics")
plugins {
//other plugins
}
进行此更改后,映射文件上传工作正常。
更新
我发现,如果我把crashlytics
插件移到plugins
部分的底部,我也会有同样的效果。现在看起来像:
plugins {
//all other plugins
id("com.google.firebase.crashlytics")
}