如何减小包装尺寸

And*_* N. 5 android xamarin.android mvvmcross xamarin

我使用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)

  • 我的app程序集(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而产生碎片,所以磁盘上的实际大小大小差别很大

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

为了减少编译的.apk的大小,我该怎么办?

我发现它很大.

Sof*_*ion 2

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

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