减少 xamarin.forms 中的 apk 大小

Raj*_*lke 1 xamarin xamarin.forms

我在我的应用程序中使用 Web Api 服务。虽然它是具有注册和登录等小功能的应用程序,但发布的大小最初为 55 MB,然后我搜索了一下,然后将其缩小到 22 MB。我的设置仅为 Linking-SDk 程序集。我已经尝试了所有其他事情,例如取消选择共享运行时。选择 Pro Guard,生成一个包,所有类型的链接但没有得到预期的结果。我是否遗漏了什么或应用程序大小将是 22 MB。请提出解决方案

小智 8

(复制自:https : //montemagno.com/how-to-keep-your-android-app-size-down

  1. 链接你的图书馆

Xamarin 应用程序使用“链接器”来减小应用程序大小。您可以浏览文档并了解其工作原理,但为了简化事情,它对您的应用程序使用静态分析来删除您的应用程序中未使用的程序集和类型,以降低您的应用程序大小。这适用于任何 Xamarin 应用程序,因此您也应该在您的 iOS 应用程序中尝试此操作,因为它可以将默认“Hello, World”应用程序中的应用程序大小从 16MB 减少到 2.9MB!您可以从项目设置中提供三个设置:

在此处输入图片说明

Don't Link会做到这一点,它不会链接任何东西,你将只剩下 Mono、mscorlib、Xamarin.Android 和一堆其他东西:

在此处输入图片说明

仅链接 SDK 程序集是您最安全的选择,应该是您的默认设置,因为它只会尝试从 Xamarin.Android 中剥离内容,并且不会触及您的任何第三方库。但是,要真正减小应用程序的大小,您应该尝试Link All Assemblies,因为它会调查所有内容并减小应用程序的大小。请务必完全测试您的应用程序,因为链接器可能具有攻击性并删除您需要的某些内容,如果是这种情况,您实际上可以使用[Android.Runtime.Preserve]标志或在您的 MSBuild 中设置链接跳过确保不是所有的库都被链接。

因此,在我的 Bike Now 应用(使用 Json.NET、Android Support v4、v7、Google Play Services 和 Xamarin.Insights)中采用这种做法,我们可以在构建应用以支持所有三种 ABI 时比较和对比应用大小(我们接下来会讨论这个!)。

  • 不要链接:40.7MB
  • 仅链接 SDK 程序集:18.7MB
  • 链接所有程序集:13MB

正如您所看到的,正确链接可以产生巨大的影响,但我们可以做得更好!

2. 拆分您的 APK

在 Android 上,您可以在发布应用程序时支持 ABI(应用程序二进制接口)。最常用的是 armeabi-v7a,但仍有大量设备支持和运行旧的 armeabi ABI 甚至 x86 设备。因此,为了确保您的应用能够覆盖最多的用户,您最有可能进入项目设置并选择每个 ABI(我知道我这样做!)。

在此处输入图片说明

但是,对于您选择的每个 ABI,您实际上都将一个单独的 libmonodroid 和 sgen 与您的应用程序捆绑在一起。不相信我,然后将您的 .apk 重命名为 .zip 并查看 lib 文件夹:

在此处输入图片说明

这当然是有道理的,因为您需要支持该 ABI 的不同版本的 monodroid 和 sgen。问题是您现在将所有这些库捆绑到一个 APK 中,您的用户将下载所有这些库!任何 Android 开发人员(甚至 Java 开发人员)的解决方案是简单地拆分您的 APK 并将它们全部上传到 Google Play!通过这种方式,您可以在所有三个 APK 中拥有更小的应用程序大小。您现在可以通过简单检查您的项目选项来执行此操作:

在此处输入图片说明

现在,我上传了三个不同且更小的 APK,而不是仅仅上传一个 APK(请注意,创建包需要更长的时间):

  • armeabi-v7a:10.2MB
  • armeabi:10.3MB
  • x86:10.4MB

笔记:

您可能需要在选中复选框后关闭 XS 并确保在您的 csproj 中设置了此标志:

真的

此外,您的新 APK 将位于您的 /bin/Release 文件夹中,并在其文件名中标有已签名。

通过这些快速提示让您的用户满意并降低应用程序的大小。

请参阅这些链接:

  1. https://docs.microsoft.com/en-us/xamarin/android/deploy-test/building-apps/build-process
  2. https://montemagno.com/how-to-keep-your-android-app-size-down/
  3. https://forums.xamarin.com/discussion/113229/what-is-the-ideal-apk-size-from-xamarin-forms-and-how-to-reduce-it-without-force-close