如何通过ios中的cocoapods将带有供应商框架的dsym文件运送

时间:2019-07-02 06:42:19

标签: swift frameworks cocoapods podspec dsym

我创建了一个通过cocoapods运送的供应商框架。现在,我还希望将dsym文件与框架一起运送,以便我的崩溃可以显示在控制台中,并包含在存档的ipa的dsym中。

我试图在框架中复制dsym,但是在归档构建时却抛出了“ bit_strip错误”。

预先感谢

1 个答案:

答案 0 :(得分:0)

1.3.0中引入的Cocoapods可以如here所述自动复制供应商动态框架的dSYMs

CocoaPods将自动检测并复制供应商动态框架的.dSYM文件。将.dSYM放在您的.framework旁边以供CocoaPods检测到它,然后将其复制到$ {DWARF_DSYM_FOLDER_PATH}指定的文件夹中。

那么这到底如何工作?好吧,Cocoapods在本地克隆您的存储库,然后根据Podspec中为库指定的模式对其进行清理。如果您将*.framework*.framework.dSYM放在路径的同一级别,Cocoapods将在存档过程中自动检测到它并处理dSYM到${DWARF_DSYM_FOLDER_PATH}文件夹的副本。

├── Stencil.framework
│   ├── Headers -> Versions/Current/Headers
│   ├── Modules -> Versions/Current/Modules
│   ├── Resources -> Versions/Current/Resources
│   ├── Stencil -> Versions/Current/Stencil
│   └── Versions
│       ├── A
│       │   ├── Headers
│       │   │   ├── Stencil-Swift.h
│       │   │   └── Stencil.h
│       │   ├── Modules
│       │   │   ├── Stencil.swiftmodule
│       │   │   │   ├── x86_64.swiftdoc
│       │   │   │   └── x86_64.swiftmodule
│       │   │   └── module.modulemap
│       │   ├── Resources
│       │   │   └── Info.plist
│       │   └── Stencil
│       └── Current -> A
└── Stencil.framework.dSYM
    └── Contents
        ├── Info.plist
        └── Resources
            └── DWARF
                └── Stencil

检查*.dSYM是否被正确检测和处理的一种好方法是,一旦将其添加到项目中,请查看Pods-{ProjectName}-frameworks.sh,您应该找到一条类似于以下内容:

install_dsym "${PODS_ROOT}/Stencil.framework.dSYM"

在Cocoapods上方的那一行将dSYM复制到${DWARF_DSYM_FOLDER_PATH}文件夹,并在存档过程中将其正确添加到*.xcarchive

这里重要的一点是,如果供应商提供的动态框架启用了位码,则dSYM将不够用,因为在这种情况下,将生成另一个名为*.bcsymbolmap的文件,因此也有必要正确地表示崩溃。 Apple here对此有很好的解释。

再一次,我们如何将所生成的*.bcsymbolmap包含在所生成的框架中?好了,您可以在Podspec中添加一个preserve_path,以保留对生成的*.bcsymbolmap的引用,然后Cocoapods会照顾它并为您复制符号。

m.preserve_path = '**/*.bcsymbolmap'

Mapbox-iOS-SDK-nightly-dynamic.podspec是一个很好的例子。必须特别指出的是,*.bcsymbol*.framework必须与*dSYM处于同一级别路径,才能正确处理。

再次检查是否检测到您的*.bcsymbolmap并正确处理它。转至Pods-{ProjectName}-frameworks.sh,您应该找到与以下内容相似的新行:

install_bcsymbolmap "${PODS_ROOT}/AA73DD4B-8AC5-30D1-9831-3D09CC9906D9.bcsymbolmap"