IPA文件结构 – SupportSwift和符号
解压“.ipa”文件时,输出为:包含应用程序的Payload目录。 但是,有时输出是: Payload , SwiftSupport和Symbols目录。
- 生成SwiftSupport和Symbols目录的条件是什么?
另外,我注意到SwiftSupport包含.dylib
文件,我假设它们已经存在于应用程序中(右键单击 – >显示包内容 – >框架),所以:
- 应用程序即使不存在也应该正常工作,生成它们的目的是什么?
我找不到任何有用的参考来描述我在找什么。
和Archiver玩后,我find了所有问题的答案。
生成SwiftSupport和Symbols目录的条件是什么?
SwiftSupport
文件夹由目标的Build Settings中的ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
选项pipe理
Symbols
目录由导出对话框上的checkboxpipe理:
由于Xcode 7还支持exportOptionsPlist
和命令行构build的符号导出选项, 在这里有更多的细节
第二部分更有意思:
应用程序即使不存在也应该正常工作,生成它们的目的是什么?
回答这个问题,我发现在…苹果的文档:
总是将Swift标准库embedded到目标产品中,即使目标不包含任何Swift代码。 例如,如果目标是embedded其他包含Swift的产品,或者如果它是不包含Swift但是正在testing产品的testing目标,则应该启用它。 此设置仅适用于包装产品,不适用于独立的二进制产品。
所以应用程序的.ipa可以包含这个文件夹,甚至不需要直接使用swift
正如s4444的回答给你一些解释给你的答案。 我观察到几点。
Symbols
:你需要这个文件夹来象征你的崩溃日志。
SwiftSupport
:虽然在Payload和框架中有两个dylib的副本。 但是,当你上传到iTunesConnect,那么你下载的应用程序的大小小于你的ipa文件的大小。 iTunesConnectpipe理您的重复项目(dylib)。
欲了解更多信息,你可以检查这个答案