好,所以我尝试自动上传dSYM。 我正在遵循此官方文档中的说明: https://firebase.google.com/docs/crashlytics/get-deobfuscated-reports
我被困在“手动运行上传符号脚本”部分。
有3种上传dSYM的方法。我正在尝试遵循第一个-在构建过程中包括以下内容:
find ${DWARF_DSYM_FOLDER_PATH} -name "*.dSYM" | xargs -I \{\} ${PODS_ROOT}/Fabric/upload-symbols -gsp MyProjectFolder/GoogleService-Info.plist -p ios \{\}
现在我已经尝试了以下方法:
该脚本放在哪里?
如何查找它是否正在运行?
答案 0 :(得分:4)
TL; DR: 在构建时生成的dSYMS在“启用位码”时代不再具有价值,您需要从Apple下载dSYM并将其上传到您的第三方崩溃报告器Apple处理完您的上传文件后,将其作为构建后的步骤。
缺少dSYM /在第三方崩溃报告控制台中的符号失败。我以为,尽管按照Crashlytics安装说明进行操作,脚本还是失败了。
事实证明,第三方崩溃报告系统(例如Crashlytics或New Relic)在当前的最佳应用分发实践中存在一个基本问题,该最佳实践是启用了位码的应用。从历史上看,这些第三方崩溃报告系统依靠构建时步骤来上载构建时生成的dSYM。但是由于启用位码意味着应用程序商店会重新编译您的应用程序,因此您试图上载的由构建时生成的dSYM实际上是无用的。
作为背景,启用了位码的应用程序被“变薄”,因此被Apple重新编译,因此每个设备仅获得所需的下载位。 您要启用位码。这是一件好事。但是,启用位码的分发会弄乱符号。 无论您在构建时生成什么dSYM,这些dSYM实际上都不会与您的崩溃相关,因为您的崩溃将来自具有新的对应dSYM的应用商店的应用商店重新编译版本。
因此,不必担心上载脚本在构建时是否起作用。实际上,应该从构建过程中删除该步骤,因为这只会浪费您的时间和带宽。
解决方案是在上载您的应用程序后等待“一段时间”(据报道,通过NewRelic文档,这是几分钟)(可能是App Store所说的构建持续时间),然后从那里下载dSYM。使用您的第三方崩溃报告程序命令行上传脚本
第三方崩溃报告者(至少是NewRelic和Crashlytics文档)目前推荐的解决方案是转到App Store Connect页面进行构建并下载dSYM,然后上传,或者使用XCode的Organizer进行归档。 “下载调试符号”按钮,然后将其上传。
这确实有效,将手动dSYM下载推送到崩溃报告供应商后,您将获得带符号的报告。尽管使用Xcode GUI或App Store Connect界面,这是一个手动过程。
不过,您可以使用Fastlane自动执行此过程,我认为这是正确的解决方案。
https://docs.fastlane.tools/actions/download_dsyms/#download_dsyms
https://docs.fastlane.tools/actions/upload_symbols_to_crashlytics/
答案 1 :(得分:1)
尝试以下步骤:
第1步:选择应用程序的Xcode项目,然后选择应用程序目标,然后选择“构建阶段”。
第2步:在Xcode菜单中,选择“编辑器”,然后选择“添加构建阶段”,然后单击“添加运行脚本构建阶段”。
第3步:您现在应该在“构建阶段”选项中看到“运行脚本”部分。
第4步:将脚本粘贴到“运行脚本构建阶段”正文中。
请记住要在脚本中设置正确的文件路径。
答案 2 :(得分:0)