Xamarin.iOS在为AdHoc/AppStore构建时会这样做吗?我绑定到许多具有支持模拟器的架构的静态/胖库。AdHoc/AppStore是否剥离了未使用的架构?
简短回答:是
长答案:
虽然 Xamarin 的链接器是托管链接器(并且仅适用于托管代码),但额外的体系结构将从最终的可执行二进制文件中删除。对于 i386 来说如此,但对于仅 ARMv7 可执行文件的删除 ARMv6(从库中)也是如此。
此外,由于您包含了很多绑定,因此您可能需要:
-
在绑定.dll上启用托管链接器。这将从.dll中删除未使用的代码,并且还将优化绑定。通过在绑定项目中添加
[LinkerSafe]
属性,可以轻松执行此操作;和 -
启用新的静态注册器,并在
[LinkWith]
属性中包含SmartLink=true
。这使本机链接器能够更好地删除本机代码(如果从绑定.dll中删除未使用的代码,则会变得更加容易)。
这两个选项都可以减小最终应用程序的大小。您可以观看我关于高级 iOS 构建机制的 Evolve 2013 演讲,了解有关它们的更多详细信息。