Crashlytics 如何从 Carthage 框架上传 dsym 文件

Crashlytics how to upload dsym files from Carthage frameworks

按照此处的说明进行操作 https://docs.fabric.io/apple/crashlytics/advanced-setup.html 以便 自动将 dSYM 文件上传到 fabric,您只需 运行 Fabric.framework/run 在应用程序目标上编写脚本。

我的项目配置如下:

Project F
- product is Dynamic Framework

Project A
- product is .app
- depends_on:
    - Project F
    - X.framework from Carthage

在项目 A 的目标上,作为构建阶段,我已将 运行 添加到 Fabric.framework/run 脚本。 在 Project F 的某处,我强行崩溃并观察了 Crashlytics 中的调用堆栈。调用堆栈显示项目 F 但符号显示 (Missing)(请参阅 https://imgur.com/a/HDubV

如果我使用所有 dSYM 进行存档并手动添加到 crashlytics,则会显示项目 F 中的符号。

如何将生成的 dSYM 自动上传到 Crashlytics?我可以使用 restful api 吗?

注意:我假设使用 Carthage 导入的动态框架也会发生相同的行为。

ENABLE_BITCODE = NO

Output Product Directory
- Debug-iphoneos
    - App.app
        - Frameworks
            - ProjectF.framework
            - X.framework
    - App.app.dSYM
    - ProjectF.framework.dSYM
    - X.framework.dSYM

If you link in other static or dynamic frameworks, you could see crash reports with missing line numbers or file information. This information comes from your dSYM files, so ensure that your dSYM files for the frameworks are placed in the same directory as the app’s dSYM and that they are built before your .app. - Crashlytics Static or Dynamic Frameworks

如上文Output Product Directory所示,dSYM在同一个地方,出现在App.app.dSYM

之前的文件夹中

感谢@MikeBonnell

找到 upload-symbols 脚本 https://docs.fabric.io/apple/crashlytics/missing-dsyms.html

的文档

由于我在 iOS 应用程序中使用(并使用 Cocoapods),我按如下方式更新了我的构建阶段

find ${DWARF_DSYM_FOLDER_PATH} -name "*.dSYM" | xargs -I \{\} ${PODS_ROOT}/Fabric/upload-symbols -a <api-key> -p ios \{\}