使用健身房后,Crashlytics 在 android 上失败。 (得到“Crashlytics 已将提交二进制文件移到 Crashlytics.framework 目录之外......”错误)

Posted

技术标签:

【中文标题】使用健身房后,Crashlytics 在 android 上失败。 (得到“Crashlytics 已将提交二进制文件移到 Crashlytics.framework 目录之外......”错误)【英文标题】:Crashlytics fails for android after using gym. (get "Crashlytics has moved the submit binary outside of Crashlytics.framework directory..." error) 【发布时间】:2019-06-26 02:27:18 【问题描述】:

我们正在使用 react-native 并设置了一个快速文件来构建和部署 iosandroid 测试版。如果我们构建和部署 iOS 测试版,一切都很好。如果我们构建和部署 Android 测试版,一切都很好。

但是,如果我们尝试使用相同的 fastlane 执行来执行这两种操作,Android 调用 crashlytics 会失败并出现以下错误:“Crashlytics 已将提交二进制文件移到 Crashlytics.framework 目录之外,截至 3.4.1。请更改:crashlytics_path 到<PODS_ROOT>/Crashlytics/submit"

【问题讨论】:

【参考方案1】:

解决方案:在为 Android 构建调用 crashlytics 之前添加以下行。

lane_context[SharedValues::IPA_OUTPUT_PATH] = nil

推理:当使用gym 完成 iOS 构建时,它会设置此 IPA_OUTPUT_PATH 值。当 crashlytics_helper 确定要使用哪个 submit 二进制文件时,它会检查是否设置了 ipa_path ——如果是,它假定我们正在处理 iOS 构建,并尝试使用 iOS submit。所以!将此 IPA_OUTPUT_PATH 设置为 nil 意味着 crashlytics_helper 认为这必然是 iOS 构建,并且我们使用了正确的 submit 二进制文件。

请注意,另一种解决方法是简单地更改顺序并首先进行 Android 构建和部署,然后是 iOS。

【讨论】:

顺便说一句,不知道处理这个问题的最合适的方法是什么 - 想把这个发布到 somewhere 以防这对其他人有帮助。只是假设发布一个问题然后自己回答可能是最明确的选择。也没有一定认为这是一个需要向 Fastlane 人员报告的错误。 请务必报告,fastlane 可能会添加一些输出,表明crashlytics 正在使用该车道上下文值来获取 IPA,以使用户更清楚这里发生的事情。

以上是关于使用健身房后,Crashlytics 在 android 上失败。 (得到“Crashlytics 已将提交二进制文件移到 Crashlytics.framework 目录之外......”错误)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中使用 Crashlytics 登录?

在 iOS 应用中升级 SDK 后 Firebase Crashlytics 不显示日志

Xcode 7.1 中 ios 的 Crashlytics,在 xcode 7 中添加框架后抛出多个错误

从 Crashlytics 升级到 Fabric 后无法构建我的应用

Crashlytics 在使用提交时要求提供设备的 UDID

Crashlytics/Fabric - 删除帐户/项目后我的应用程序会崩溃吗?