1

我正在使用 Monotouch 创建 iOS 应用程序。我为 ChartBoost、RevMob 等创建了绑定。

我遇到的问题是最终应用程序的大小约为 20MB。对于这样一个简单的游戏应用程序来说,这太过分了。

我检查了主要的应用程序项目 dll,它只有大约 500KB 大。但是绑定的 dll 总共大约 19MB。

我不确定我做错了什么我已经做了以下事情但没有运气: - 仅链接本机 SDK - 仅使用 ARMV7 - 使用 LLVM - 为我的 Binding 项目添加了 LinkerSafe 属性。

谁能帮我吗?

4

1 回答 1

4

您的设置听起来很合理 - 但您的问题中没有多少细节可以用来帮助您。如果您使用多个本机库,那么获得大型应用程序也就不足为奇了。

请注意,仅链接原生 SDK不存在。它仅是Link SDK 程序集,仅适用于托管程序集(非本机程序集)。仍然托管链接非常重要,因为它将允许进一​​步优化。

当您添加[LinkerSafe]绑定项目时,未使用的代码将被删除(即使使用了Link SDK)。它还对生成的绑定代码进行了相当多的优化(使其更小更快)。确保(比较前后大小)绑定程序集包含该属性。

您可能希望使用链接所有程序集来获得最大的节省。再次比较之前(链接 sdk)和之后(链接全部),看看有什么好处(您可能需要[Preserve]一些代码才能使其工作,例如,如果您使用反射)。

有一个非常新的特性,SmartLink它消除了--force_load使移除本机代码(例如,从大多数本机库中)更容易的要求。很难预测会节省多少(数据不足),但很多绑定样本(在 github 上)节省了 250KB 到 400KB。

注意:一旦我的 Evolve 演讲视频(关于构建优化)在线可用,我将更新我的答案。同时,我发表的一些较早的博客文章(和其他文档)可以帮助您优化应用程序的大小。

于 2013-05-09T21:03:44.370 回答