减少Xamarin.forms中的APK大小

时间:2018-08-06 07:29:54

标签: xamarin.forms

我正在使用我的应用程序中的Web Api服务。虽然它是具有小功能(例如注册和登录)的应用程序,但是该发行版的大小首先是55 MB,然后我进行了搜索,然后将其减小到22 MB。 我的设定是 链接-仅SDk组件。 我尝试了其他所有操作,例如取消选择共享运行时。 选择“ Proguard”,“生成一个程序包”,所有类型的链接,但均未获得期望的结果。 我是否缺少某些东西,否则应用程序大小将为22 MB。 请提出解决方案

2 个答案:

答案 0 :(得分:3)

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

  1. 链接您的图书馆
  

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

enter image description here

  

不链接会做到这一点,它不会链接任何内容,您将拥有All Mono,mscorlib,Xamarin.Android和许多其他功能。   其他东西:

enter image description here

  

仅链接SDK程序集是您最安全的选择,并且应将其作为默认设置,因为它只会尝试从Xamarin.Android中删除内容。   并且您的任何第三方库都不会受到影响。但是,   确实减小了应用的大小,您应该尝试链接所有   程序集,因为它将调查所有内容并降低您的   应用大小。请务必全面测试您的应用,因为   链接器可能是攻击性的,并删除了您需要的内容,如果有的话   实际上,您可以使用 [Android.Runtime.Preserve] 标志或   在您的MSBuild中设置一个linkkip,以确保并非所有   库被链接。

     

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

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

如您所见,正确链接可以产生巨大影响,但是我们可以做到   甚至更好!

2。拆分APK

  

在Android上,您可以使用ABI(应用程序二进制接口)   在您发布应用程序时可以提供支持。最常用的将是   armeabi-v7a,但是仍然有大量的设备支持和   运行旧的armeabi ABI甚至x86设备。所以要确保   您的应用吸引了您最有可能进入的最多用户   项目设置并选择每个ABI(我知道!)。

enter image description here

  

但是,对于您选择的每个ABI,您实际上是在捆绑   将libmonodroid和sgen与您的应用分开。那你别相信我   将.apk重命名为.zip并查看lib文件夹:

enter image description here

  

这当然很有意义,因为您需要使用其他版本的   支持该ABI的monodroid和sgen。问题是你现在   将所有这些库捆绑到一个APK中,并且您的用户   将全部下载!适用于任何Android的解决方案   开发人员(甚至Java开发人员)只需将您的APK拆分并上传   全部都交给Google Play!这样,您可以缩小应用尺寸   跨越所有三个APK。您现在可以通过简单的签入   项目选项:

enter image description here

  

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

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

注释:

     

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

     

true

     

此外,新的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

答案 1 :(得分:0)

要减少APK文件的大小,您需要在{em> visual studio 中使用ProGuard。它将删除所有未使用的代码,资源,并将filesclassesvariables名称缩小为非常短的名称。

如何使用ProGuard,您会看到我的另一个stackverflow问题How to use ProgGuard with Xamarin forms.

另一个选项是使用链接Android项目的属性,使用 Sdk and User assembly 选项。一段时间后,删除我们精算师使用的代码,因此需要小心。