即使构建设置具有调试信息格式 = 带有 dSYM 的 Dwarf,Xcode 也不会生成所有必需的 dSYM

Posted

技术标签:

【中文标题】即使构建设置具有调试信息格式 = 带有 dSYM 的 Dwarf,Xcode 也不会生成所有必需的 dSYM【英文标题】:Xcode not generating all required dSYMs even though Build Settings have Debug Information Format = Dwarf with dSYM 【发布时间】:2020-12-14 14:23:43 【问题描述】:

Xcode 正在生成一个 dsym,它以我的应用程序的名称作为文件名(例如 MyApp.app.dSYM),但它没有使用 Firebase 不断告诉我我丢失的 UUID 生成其他 dsym。 (例如92248A4B-6CA2-3B54-9787-C007E25C018F.dSYM

我已按照说明进行操作,但仍有问题。这在我们使用 Fabric 时可以正常工作,但由于我们更新为直接使用 Firebase,所以没有什么能真正正常工作了。

我已按照 how to change the Build Settings to make sure the dSYMs get generated 上的说明进行操作,但是当我按照从 Fabric 到 Firebase 的迁移说明进行操作时,我的构建设置已经更新。这是我的构建设置的屏幕截图:

这是我的运行脚本构建阶段的屏幕截图:

在存档构建日志中,生成 dSYM 的唯一参考是我得到的 MyApp.app.dSYM,但我也需要生成其他的。

生成DSYM文件 /Users/kenny/Library/Developer/Xcode/DerivedData/MyApp-dttbmiamkojuotbcyjgzerxhcqun/Build/Intermediates.noindex/ArchiveIntermediates/MyApp/BuildProductsPath/Release-iphoneos/MyApp.app.dSYM /Users/kenny/Library/Developer/Xcode/DerivedData/MyApp-dttbmiamkojuotbcyjgzerxhcqun/Build/Intermediates.noindex/ArchiveIntermediates/MyApp/InstallationBuildProductsLocation/Applications/MyApp.app/MyApp (在项目“MyApp”的目标“MyApp”中) cd /Users/kenny/inaday2/svn-MyApp/trunk/apps/ios/MyApp /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/dsymutil /Users/kenny/Library/Developer/Xcode/DerivedData/MyApp-dttbmiamkojuotbcyjgzerxhcqun/Build/Intermediates.noindex/ArchiveIntermediates/MyApp/InstallationBuildProductsLocation/Applications/MyApp.app/MyApp -o /Users/kenny/Library/Developer/Xcode/DerivedData/MyApp-dttbmiamkojuotbcyjgzerxhcqun/Build/Intermediates.noindex/ArchiveIntermediates/MyApp/BuildProductsPath/Release-iphoneos/MyApp.app.dSYM

【问题讨论】:

【参考方案1】:

设置看起来不错,附上我正在使用和处理的脚本。希望这些信息有所帮助。 要获得所有需要的 dsym,您需要先将构建上传到 Testflight,然后从 Tesflight,您需要下载最终处理后的 dSYM.zip。

将下载一个文件夹 appDsyms.zip,解压后,您将看到 dSYM 的列表

使用下面的脚本将其上传到 crashlytics。 因此,在 Firebase Crashyltics 中,dSYM 映射到我们上传的构建的方式几乎没有改变。

最初,还有一个手动选项可以上传,但现在已放弃,这是从终端运行脚本的唯一方法。

Pods/FirebaseCrashlytics/upload-symbols -gsp YOUR_PLIST_FULL_PATH -p ios ~/PATH_TO_DSYM_ZIP_OR_FOLDER 

**Example[Below is my working script to upload dSYM to crashlytics]:**

Pods/FirebaseCrashlytics/upload-symbols -gsp MY_PRROJECT_NAME/Support/Firebase/Prod/GoogleService-Info.plist -p ios ~/Downloads/appDsyms 

【讨论】:

这仅在您的应用中启用“启用 Bitcode”时才有效,否则 dsyms 仅位于您的计算机上。

以上是关于即使构建设置具有调试信息格式 = 带有 dSYM 的 Dwarf,Xcode 也不会生成所有必需的 dSYM的主要内容,如果未能解决你的问题,请参考以下文章

无法将 dSYM 文件复制到存档中

dsym 文件的结构是啥?

崩溃报告没有进入Crashlytics / fabric。显示警告:“看起来我们缺少dSYM来处理以下版本的崩溃。”

dsym 更多信息显示——

带有 XCode 目标的 CMake,生成忽略发布配置的调试符号设置

为啥查看源码时仪器显示不可用?