IPA文件结构 - SupportSwift&符号

时间:2016-11-20 09:18:28

标签: ios swift xcode ipa

解压缩“.ipa”文件时,输出为: Payload 目录,其中包含该应用程序。但是,有时输出为: Payload SwiftSupport Symbols 目录。

  • 生成 SwiftSupport Symbols 目录的条件是什么?

另外,我注意到 SwiftSupport 包含.dylib个文件,我认为它们已经存在于应用程序中(右键单击 - > show package contents - > frameworks) ,所以:

  • 应用程序即使不存在也应该正常工作,生成它们的目的是什么?

我找不到任何有用的参考来描述我正在寻找的东西。

2 个答案:

答案 0 :(得分:3)

在使用归档器后,我找到了所有问题的答案。

  

生成SwiftSupport和Symbols目录的条件是什么?

SwiftSupport文件夹由目标的构建设置

中的选项ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES管理

Symbols目录由导出对话框上的复选框管理: enter image description here

从Xcode 7开始,对于命令行构建,还支持带有符号导出选项的exportOptionsPlist,更多详细信息here

第二部分更有趣:

  

应用程序即使不存在也应该正常工作,生成它们的目的是什么?

回答我在...中找到的这个问题的苹果文档:

  

始终将Swift标准库嵌入目标产品中,即使目标不包含任何Swift代码也是如此。例如,如果目标是嵌入包含Swift的其他产品,或者如果它是一个不包含Swift但正在测试产品的测试目标,则应启用此功能。此设置仅适用于包装产品,而不适用于独立的二进制产品。

因此,即使不直接使用swift,应用程序的.ipa也可以包含带有库的文件夹

答案 1 :(得分:1)

正如sage444的回答,你的答案给出了一些解释。我观察到的几点很少。

Symbols:您需要此文件夹来表示崩溃日志。

SwiftSupport:虽然您在Payload中有两个dylib副本,而在框架中有其他副本。但是当您将其上传到iTunesConnect时,可下载应用的大小将小于您的ipa文件的大小。 iTunesConnect管理您的重复项目(dylibs)。

有关详细信息,请查看this answer