Crashlytics在使用gym后无法用于android。(获取“Crashlytics已将提交二进制文件移动到Crashlytics.framework目录之外…”错误)

Crashlytics在使用gym后无法用于android。(获取“Crashlytics已将提交二进制文件移动到Crashlytics.framework目录之外…”错误),android,ios,react-native,crashlytics,fastlane,Android,Ios,React Native,Crashlytics,Fastlane,我们使用react native并设置了一个fastfile来构建和部署iOS和Android Beta。如果我们构建并部署iOS测试版,一切都很好。如果我们构建并部署Android测试版,一切都很好 但是,如果我们尝试使用相同的fastlane执行同时执行这两种操作,Android对crashlytics的调用将失败,并出现以下错误:自3.4.1起,crashlytics已将提交二进制文件移到crashlytics.framework目录之外。请更改:crashlytics\u路径为/cras

我们使用react native并设置了一个fastfile来构建和部署iOS和Android Beta。如果我们构建并部署iOS测试版,一切都很好。如果我们构建并部署Android测试版,一切都很好


但是,如果我们尝试使用相同的fastlane执行同时执行这两种操作,Android对crashlytics的调用将失败,并出现以下错误:自3.4.1起,crashlytics已将提交二进制文件移到crashlytics.framework目录之外。请更改:crashlytics\u路径为/crashlytics/submit

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

lane_context[SharedValues::IPA_OUTPUT_PATH] = nil
推理:当iOS构建使用gym完成时,它会设置此IPA\u输出路径值。当crashlytics_helper确定使用哪个提交二进制文件时,它会检查是否设置了ipa_路径-如果设置了ipa_路径,它会假设我们正在处理iOS构建,并尝试使用iOS提交。所以将此IPA_OUTPUT_PATH设置为nil意味着crashlytics_helper不一定将其视为iOS构建,我们使用了正确的提交二进制文件


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

顺便说一句,不确定最合适的处理方法是什么-希望将此发布到某个地方,以防这对其他人有所帮助。假设发布一个问题,然后自己回答可能是最清晰的选择。也不一定觉得这是一个bug要报告给Fastlane的人。请报告它,Fastlane可能会添加一些输出,crashlytics正在使用该lane上下文值来获取IPA,让用户更清楚地看到这里发生的事情。