Xamarin.iOS 链接器删除 i386 用于 adhoc



Xamarin.iOS在为AdHoc/AppStore构建时会这样做吗?我绑定到许多具有支持模拟器的架构的静态/胖库。AdHoc/AppStore是否剥离了未使用的架构?

简短回答:

长答案:

虽然 Xamarin 的链接器是托管链接器(并且仅适用于托管代码),但额外的体系结构将从最终的可执行二进制文件中删除。对于 i386 来说如此,但对于仅 ARMv7 可执行文件的删除 ARMv6(从库中)也是如此。

此外,由于您包含了很多绑定,因此您可能需要:

  • 在绑定.dll上启用托管链接器。这将从.dll中删除未使用的代码,并且还将优化绑定。通过在绑定项目中添加 [LinkerSafe] 属性,可以轻松执行此操作;和

  • 启用新的静态注册器,并在 [LinkWith] 属性中包含SmartLink=true。这使本机链接器能够更好地删除本机代码(如果从绑定.dll中删除未使用的代码,则会变得更加容易)。

这两个选项都可以减小最终应用程序的大小。您可以观看我关于高级 iOS 构建机制的 Evolve 2013 演讲,了解有关它们的更多详细信息。

最新更新