我们有一个大型(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 可执行文件的大小?
答案 0 :(得分:0)
您可以使用otool
代替nm来获取所需的尺寸信息,但我不确定。在Unity论坛上有一个简短的build size analysis guide可能会有所帮助。
您是正确的,可执行文件的很大一部分是C#元数据。但是,我们现在正在努力从可执行文件中删除元数据,而是将其存储在外部文件中。最新的Unity补丁版本现在已将大部分元数据外部化,并且在几周内它们都应该是外部的。您应该能够在iOS构建输出目录的Data / Managed / Metadata目录中找到元数据文件。