如何减小包装尺寸

时间:2013-12-13 14:56:50

标签: android xamarin.android xamarin mvvmcross

我使用Xamarin实现了一个Android应用程序:

.apk的大小为 13.6MB ,其中包含:

  • 配置:发布
  • 关联:仅限Sdk程序集
  • 支持的架构:armeabi,armeabi-v7a

以下是从编译的.apk中获取的主要组件大小的概述:

(这些是未压缩的尺寸,我将.apk取消归档到目录并查看 Windows资源管理器中的文件):

  • classes.dex (1.23 KB)
  • 两个libmonodroid.iso(armeabi + armeabi-v7a)(5.58 MB)
  • 所有Mono.xxx.dll (3.89 MB)
  • mscorlib.dll (1.51 MB)
  • 所有System.xxx.dll (2.56 MB)

  • 我的应用程序集(Droid应用程序+一个PCL)(204 KB)

  • MvvmCross +插件(599 KB)
  • Xamarin ActionbarSherlock (348 KB)
  • ZXing.monoandroid (413 KB)
  • PCL Newtonsoft.Json (398 KB)
  • PCL Microsoft HTTP客户端库(System.Net.Http.dll)(110KB)

  • 'res'文件夹(大小:451KB磁盘大小:816KB) - 因为有些文件是1KB而产生碎片,所以实际大小 vs 磁盘大小明显不同

  • 所有PNG文件(大小:磁盘大小为325KB:磁盘上为496KB)

我可以做些什么来减少已编译的.apk的大小?

我发现它很大。

1 个答案:

答案 0 :(得分:2)

使用链接:Sdk +用户程序集,并完成使用Preserve属性标记类的困难过程(请参阅http://docs.xamarin.com/guides/ios/advanced_topics/linker/)。当您的应用程序在Android日志中崩溃时,您可以检查哪个类丢失。它应该只是通过反射或使用IoC动态使用的类。

你也可以创建2个单独的包,一个只用armeabi(用于非常旧的设备),一个用armeabiv7a,一个用x86(目前你的应用程序只会在x86安卓设备上崩溃)。 Google Play支持拥有3个具有不同功能的独立包(不要忘记更改每个包的清单文件中的功能)