使用 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有三种方式(不使用,动态使用,静态使用,默认是动态使用)