shi*_*hub 7 frameworks cocoapods dsym podspec swift
我创建了一个通过 cocoapods 发送的供应框架。现在我想将 dsym 文件也与框架一起发送,以便我的崩溃可以显示在控制台中并包含在存档的 ipa 的 dsym 中。
我尝试在框架中复制 dsym,但在存档构建时抛出“bit_strip 错误”。
提前致谢
dSYMsCocoapods 在 1.3.0 中引入了自动复制供应商动态框架的可能性,如下所述:
\n\nCocoaPods 将自动检测并复制供应商动态框架的 .dSYM 文件。将 .dSYM 放置在 CocoaPods 的 .framework 旁边以检测它并将其复制到 ${DWARF_DSYM_FOLDER_PATH} 指定的文件夹中。
\n
那么这到底是如何运作的呢?好吧,Cocoapods 在本地克隆您的存储库,然后根据Podspec库中指定的模式清理它。如果您将*.framework和放在路径的同一级别,Cocoapods 将自动检测它并在存档过程中*.framework.dSYM处理 dSYM 的副本到该文件夹。${DWARF_DSYM_FOLDER_PATH}
\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Stencil.framework\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Headers -> Versions/Current/Headers\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Modules -> Versions/Current/Modules\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Resources -> Versions/Current/Resources\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Stencil -> Versions/Current/Stencil\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Versions\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 A\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Headers\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Stencil-Swift.h\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Stencil.h\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Modules\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Stencil.swiftmodule\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 x86_64.swiftdoc\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 x86_64.swiftmodule\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 module.modulemap\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Resources\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Info.plist\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Stencil\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Current -> A\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Stencil.framework.dSYM\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Contents\n \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Info.plist\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Resources\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 DWARF\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 Stencil\n\nRun Code Online (Sandbox Code Playgroud)\n检查您是否*.dSYM被检测到并正确处理的一个好方法是将其添加到项目后,查看一下Pods-{ProjectName}-frameworks.sh,您应该会找到类似于以下内容的新行:
install_dsym "${PODS_ROOT}/Stencil.framework.dSYM"\nRun Code Online (Sandbox Code Playgroud)\n通过上面的这一行,Cocoapods 会将 dSYM 复制到该文件夹,并在存档过程中将${DWARF_DSYM_FOLDER_PATH}其正确添加到该文件夹中。*.xcarchive
这里重要的一点是,如果您的供应商动态框架启用了 Bitcode,那么 dSYM 将不够,因为在这种情况下,*.bcsymbolmap将生成另一个名为的文件,并且也有必要正确地表示您的崩溃。Apple对此提供了很好的解释。
那么我们如何才能将生成的框架包含*.bcsymbolmap在生成的框架中呢?好吧,您可以在 Podspec 中添加 apreserve_path以保留对生成的引用*.bcsymbolmap,Cocoapods 会再次处理它并为您复制符号。
m.preserve_path = \'**/*.bcsymbolmap\'\nRun Code Online (Sandbox Code Playgroud)\n一个很好的例子是Mapbox-iOS-SDK-nightly-dynamic.podspec。需要提及的是,需要与要正确处理的*.bcsymbol位于同一级别的路径,这一点非常重要。*.framework*dSYM
再次检查您是否*.bcsymbolmap被检测到并正确处理它转到Pods-{ProjectName}-frameworks.sh,您应该找到类似于以下内容的新行:
install_bcsymbolmap "${PODS_ROOT}/AA73DD4B-8AC5-30D1-9831-3D09CC9906D9.bcsymbolmap"\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1476 次 |
| 最近记录: |