使用 firebase-crashlytics-gradle 的 Crashlytics 上传失败

Posted

技术标签:

【中文标题】使用 firebase-crashlytics-gradle 的 Crashlytics 上传失败【英文标题】:Crashlytics upload failure with firebase-crashlytics-gradle 【发布时间】:2020-10-04 20:55:21 【问题描述】:

我最近迁移到使用 firebase-crashlytics-gradle 而不是已弃用的 Fabric 插件。但是,我似乎与 Apache HttpClient 存在编译时冲突,因为当我启用映射文件的上传时,我收到以下错误:

Execution failed for task ':nda:uploadCrashlyticsMappingFileTst'.
> org.apache.http.entity.FileEntity.<init>(Ljava/io/File;)V

看起来我的编译类路径中的 FileEntity 缺少一个接受 File 实例并读取源代码状态的单参数构造函数,它自 v4.2 以来就一直存在。当我使用 android Studio 的“上课”导航到 FileEntity 时,我最终进入了 org.apache.http.legacy-android-29。

这里发生了什么; Firebase Crashlytics SDK 是否与 targetSDK 29 不兼容,或者我可以做些什么来解决这个问题以便上传映射文件?

【问题讨论】:

那么产生混乱的代码呢?你的推理显然是错误的,因为FileEntity 有那个构造函数。查看此project(我的)的Android 部分,它已正确配置。如果您无法构建它,则可以尝试使 IDE 缓存无效;同时删除所有 Gradle 缓存。 是的,它有那个构造函数......但是从 v4.2 开始!鉴于我报告的签名错误,我还能得出什么其他结论? 清除最有可能损坏的 IDE / Gradle 缓存...因为此错误消息毫无意义。如果最终可能有任何冲突,这将需要一个相当过时的 Gradle 插件。如果您要构建我链接的项目,您至少可以确定构建环境是健全的。由于您根本没有提供任何代码,因此这个问题更不可能不回答。 【参考方案1】:

所以正如我所想,问题出在类路径上的旧第三方插件上。我通过仅为发布版本启用混淆/缩小来解决它,然后确保第三方插件仅针对非发布版本运行。

很难弄清楚,因为依赖图是用于编译和运行时而不是构建时间的。

【讨论】:

以上是关于使用 firebase-crashlytics-gradle 的 Crashlytics 上传失败的主要内容,如果未能解决你的问题,请参考以下文章

在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?

今目标使用教程 今目标任务使用篇

Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)

MySQL db 在按日期排序时使用“使用位置;使用临时;使用文件排序”

使用“使用严格”作为“使用强”的备份

Kettle java脚本组件的使用说明(简单使用升级使用)