gpt4 book ai didi

swift - 如何通过ios中的cocoapods使用vendored框架发送dsym文件

转载 作者:行者123 更新时间:2023-12-03 21:02:08 33 4
gpt4 key购买 nike

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

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

提前致谢

最佳答案

Cocoapods 在 1.3.0 中引入了为供应商动态框架自动复制 dSYMs 的可能性,如 here 所述:

CocoaPods will automatically detect and copy the .dSYM files of vendored dynamic frameworks. Place the .dSYM next to your .framework for CocoaPods to detect it and copy it to the onto the folder specified by ${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 中。
这里的重要一点是,如果您的供应商动态框架启用了 Bitcode,那么 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"

关于swift - 如何通过ios中的cocoapods使用vendored框架发送dsym文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56846703/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com