我使用Monotouch创建iOS应用。 我已经为ChartBoost,RevMob和其他人创建了绑定。
我遇到的问题是最终应用的大小约为20MB。这对于这样一个简单的游戏应用来说太过分了。
我已经检查过主应用程序项目dll,它只有大约500KB。但绑定dll总共约19MB。
我不确定我做错了什么我已经完成了以下事情,但没有运气: - 仅链接原生SDK - 仅使用ARMV7 - 使用LLVM - 为我的Binding项目添加了LinkerSafe属性。
任何人都可以帮助我吗?
答案 0 :(得分:4)
您的设置听起来很清晰 - 但您的问题中没有太多细节我们可以用来帮助您。如果您使用多个原生库,那么获取大型应用程序并不奇怪。
请注意,仅限链接本机SDK 不存在。它仅链接SDK程序集,它仅适用于托管程序集(非本机)。仍然托管链接非常重要,因为它可以进一步优化。
在绑定项目中添加[LinkerSafe]
后,将删除未使用的代码(即使使用了 Link SDK )。它还对生成的绑定代码进行了相当多的优化(使其更小更快)。确保(比较大小之前和之后)绑定程序集包含属性。
您可能希望使用链接所有程序集来获得最大的节省。再次比较之前(链接sdk)和之后(链接所有)以查看增益(您可能需要[Preserve]
一些代码才能使其工作,例如,如果您使用反射)。
有一个非常新功能SmartLink
,它删除了--force_load
要求,以便更轻松地删除原生代码(例如来自大多数本地图书馆)。很难预测节省(没有足够的数据),但很多绑定样本(在github上)保存在250KB到400KB之间。
注意:一旦我的Evolve谈话(关于构建优化)的视频在线可用,我将更新我的答案。与此同时,我做了很多older blog post(以及其他文档)可以帮助您优化应用程序的大小。