如何减小自定义iOS框架的大小?

时间:2018-05-02 04:55:38

标签: ios swift xcode ios-frameworks swift-framework

我在iOS中使用swift4在Xcode 9.2中创建了一个自定义框架。该框架包含9个.swift文件,当我尝试存档并创建.framework文件时,结果显示大小为5MB。但是,9swift文件完全显示文件大小只有72KB。归档的.framework文件太大(5 MB),我的客户并不同意。

我试图删除不需要的代码,但仍然大小保持不变,他们希望我像Android框架一样,只有34KB的大小。这是我第一次创建框架并且我没有使用解决方案,有人可以帮助我减少框架的大小而不减少文件吗?

1 个答案:

答案 0 :(得分:2)

我尝试了两件事,它对我有用。也许它对你也有用。

链接器默认导出所有符号。您可以通过讨论in this article about Symbol Visibility的一些技巧来限制它。此外,链接器中有一个很好的功能,允许您指定符号必须导出或不导出。 Exporting only the interface symbols可能会帮助您缩小规模,而您的客户也不会浪费内存。

所以,在实践中:

  1. 考虑到我的框架档案是MyFramework.framework

  2. 我已经通过运行MyFramework.framework/MyFramework列出了$ nm -g MyFramework.framework/MyFramework的所有符号,并选择了我的二进制文件需要导出的符号(我的客户端需要访问的符号)。

  3. 所有选定的符号都保存在文本文件中。因此,假设在列出的所有符号中,您只需要将所需的符号保存到文本文件中(您的客户需要)。

  4. 打开MyFramework项目并设置Build Settings -> Exported Symbols File以指向您刚刚创建的文本文件。

  5. 手中有二进制文件,您可以使用strip -N MyFramework.framework/MyFramework删除一些符号。

  6. 在我的情况下,我可以取得一些好成绩,但我认为它可能会因项目而异。另外,我正在处理Objective-C。我做了一个样本Swift项目,取得了成果。您可以在https://github.com/gbazilio/ios-framework-size处查看。

    希望它对你有所帮助。