我正在使用我的应用程序中的Web Api服务。虽然它是具有小功能(例如注册和登录)的应用程序,但是该发行版的大小首先是55 MB,然后我进行了搜索,然后将其减小到22 MB。 我的设定是 链接-仅SDk组件。 我尝试了其他所有操作,例如取消选择共享运行时。 选择“ Proguard”,“生成一个程序包”,所有类型的链接,但均未获得期望的结果。 我是否缺少某些东西,否则应用程序大小将为22 MB。 请提出解决方案
答案 0 :(得分:3)
(复制自:https://montemagno.com/how-to-keep-your-android-app-size-down)
Xamarin应用程序使用“链接程序”以减小您的应用程序大小。 您可以浏览文档并了解其工作原理, 但为简化起见,它对您的应用使用静态分析将其删除 应用中未使用的程序集和类型来降低您的 应用大小。这适用于任何Xamarin应用,因此您也应该尝试一下 在您的iOS应用中显示,因为它可以默认减小应用的大小 “ Hello,World”应用程序从16MB减小到2.9MB!有三种 您可以从项目设置中提供的设置:
不链接会做到这一点,它不会链接任何内容,您将拥有All Mono,mscorlib,Xamarin.Android和许多其他功能。 其他东西:
仅链接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(我知道!)。
但是,对于您选择的每个ABI,您实际上是在捆绑 将libmonodroid和sgen与您的应用分开。那你别相信我 将.apk重命名为.zip并查看lib文件夹:
这当然很有意义,因为您需要使用其他版本的 支持该ABI的monodroid和sgen。问题是你现在 将所有这些库捆绑到一个APK中,并且您的用户 将全部下载!适用于任何Android的解决方案 开发人员(甚至Java开发人员)只需将您的APK拆分并上传 全部都交给Google Play!这样,您可以缩小应用尺寸 跨越所有三个APK。您现在可以通过简单的签入 项目选项:
现在,我上传的不仅仅是三个APK,而不仅仅是一个 大小不同(请注意,创建您的广告需要更长的时间 包):
- armeabi-v7a:10.2MB
- armeabi:10.3MB
- x86:10.4MB
注释:
您可能需要在选中复选框后关闭XS并确保 标志已在您的csproj中设置:
true
此外,新的APK将位于/ bin / Release文件夹中, 将在文件名中标有“已签名”。
通过这些快速提示使您的用户满意,并缩小该应用的大小。
请参阅以下链接:
答案 1 :(得分:0)
要减少APK文件的大小,您需要在{em> visual studio 中使用ProGuard
。它将删除所有未使用的代码,资源,并将files
,classes
,variables
名称缩小为非常短的名称。
如何使用ProGuard,您会看到我的另一个stackverflow问题How to use ProgGuard with Xamarin forms.
另一个选项是使用链接Android项目的属性,使用 Sdk and User assembly
选项。一段时间后,删除我们精算师使用的代码,因此需要小心。