我需要Carthage创建的bcsymbolmap文件吗?

时间:2017-02-24 16:27:42

标签: xcode git bitcode carthage

我在iOS项目中使用Carthage依赖管理器。 我在我的存储库中有Carthage/build文件夹,在签出回购时总是准备好构建框架。

我想知道build文件夹中的bcsymbolmap个文件是用来做什么的。每个carthage update创建了相当多的。

我需要保留这些文件吗?我应该在我的存储库中拥有它们吗?

3 个答案:

答案 0 :(得分:4)

  

如果您在没有项目规范的情况下使用carthage build,那么全部   .bcsymbolmaps应该删除,但如果您使用例如carthage build Alamofire它应该删除相应的.bcsymbolmap

来自the discussion of a github issue。看起来您不需要这些文件,因为默认行为是在构建新构建时删除它们。

通常,您不应该将本地构建期间生成的文件提交到存储库中,因为构建可以是特定于设备的,并且每个克隆到存储库或从存储库中提取的人都应该能够自己执行构建。

答案 1 :(得分:1)

否,您不需要这些文件。如果正确设置了迦太基,将在构建阶段复制二进制,.dsym和.bcsymbolmap文件。当您存档构建以使用App Store进行分发时,所有需要的文件都将包含在存档中,并且在将构建上传到App Store之后,您将能够随时上传dsyms文件(以便能够对崩溃报告进行解码)。如果确实如此,则无需在存储库中存储.dsyms和.bcsymbolmap文件。

有一篇很好的文章解释了构建框架时发生的事情(以及迦太基脚本实际上所做的事情)https://instabug.com/blog/ios-binary-framework/。它还说明了用于.bcsymbolmaps文件的用途-苹果服务器可以使用Bitcode重建代码,然后可以对崩溃报告进行解符号化。

因此,您不需要保留这些文件。无需将它们存储在存储库中。不存储Build文件夹内容的另一个原因是,无论如何,您的项目可能无法在具有不同环境的另一台计算机上使用它进行构建。如果要使用相同版本的依赖项来构建项目,请使用迦太基bootstrap命令而不是update

P.S。 您还可以研究copy-frameworks命令的作用: https://github.com/Carthage/Carthage/blob/fc0166b4827736bac2c804fc928797f1a742c455/Source/carthage/CopyFrameworks.swift

答案 2 :(得分:0)

位码符号映射(BCSymbolMap)

.bcsymbolmap 是一个带有调试信息的文本文件,它是为解码堆栈跟踪而生成的。解决与 .dSYM[About] 相同的问题,但在生成 Bitcode[About] 时的级别更低

看起来像:

BCSymbolMap Version: 2.0
__swift_FORCE_LOAD_$_swiftCompatibility50
__swift_FORCE_LOAD_$_swiftCompatibility51
__swift_FORCE_LOAD_$_swiftCompatibilityDynamicReplacements
_$sSo26SCNetworkReachabilityFlagsVMa
_$sSo24SCNetworkReachabilityRefaMa
...
<块引用>

我需要保留这些文件吗?我应该将它们放在我的存储库中吗?

它们是可选的