iOS上的nm符号大小

时间:2015-07-09 22:52:29

标签: c++ ios iphone compiler-optimization

我们有一个大型(40Mb)的基本C ++ iOS应用程序。由于iOS现在需要32位和64位代码片段,我们现在有一个86Mb的应用程序...这对于尝试在100Mb下获得总代码+数据下载没有用。

我们怀疑应用程序的可执行文件中可能存在大量静态数据。 Unix nm的手册页提供了--sort-size和--print-sizes选项,它们应该能够满足我们的需求。 XCode nm似乎不支持这一点。

是否有可用于重新排序的脚本? (写起来并不难,但网上没有人讨论过这个问题似乎没有意义!)

大约50%的代码也通过Unity和IL2CPP进行交叉编译,因此我们可以在IL上使用.NET内省工具,但是我更愿意保留所有分析如果可能,绑定到原生大小。我担心的是,IL2CPP正在生成大量的C#元数据,当然,因为它最终存在于可执行文件中,然后被加密并且不会在IPA中压缩。

或者,是否有人使用任何其他进程来降低iOS 可执行文件的大小?

1 个答案:

答案 0 :(得分:0)

您可以使用otool代替nm来获取所需的尺寸信息,但我不确定。在Unity论坛上有一个简短的build size analysis guide可能会有所帮助。

您是正确的,可执行文件的很大一部分是C#元数据。但是,我们现在正在努力从可执行文件中删除元数据,而是将其存储在外部文件中。最新的Unity补丁版本现在已将大部分元数据外部化,并且在几周内它们都应该是外部的。您应该能够在iOS构建输出目录的Data / Managed / Metadata目录中找到元数据文件。