Xamarin App文件(apk)大小和启动时间的影响因素
Xamarin开发的时候大家都有一个疑问,就是apk文件会不会特别的大,启动会不会很慢。答案是肯定的,文件肯定大,启动肯定会慢,但是具体大多少、具体慢多少,有什么因素可以使apk文件稍微小一点、可以使启动时间稍微短一点呢?
How to make a Xamarin.Forms app have smaller apk size and start up faster?
在Xamarin的编译选项中有几个比较关键,分别是:BundleAssemblies AotAssemblies EnableLLMV和 AndroidLinkMode

这三个选项的编辑页面只有在enterprise版本里有,但是如果你是community版本,依然可以通过修改csproj文件直接修改这些编译选项。
通过创建一个默认的Xamarin.Forms工程,修改各种编译选项,然后看它的编译的apk大小和启动时间,得出下表。这里启动时间是指从点击启动app到肉眼判断第一个页面完全显示。
|
Bundle |
AoT |
LLVM |
Link none |
Link sdk |
Link all |
Api size (M) |
Startup time (s) |
||
|
1 |
Y |
21 |
4.5 |
||||||
|
2 |
Y |
15 |
4.24 |
||||||
|
3 |
y |
y |
y |
24 |
4.2 |
||||
|
4 |
y |
y |
y |
y |
17 |
4.6 |
Link all 大小减少6M (2) |
||
|
5 |
y |
y |
y |
y |
22m |
4.7s |
Link sdk 大小减少10m (1) |
||
|
6 |
y |
y |
y |
y |
32 |
5.5s |
|||
|
7 |
Y |
Y |
y |
20 |
2.7 |
||||
|
8 |
y |
y |
y |
25.7 |
2.7 |
llvm加大启动时间2s (3) |
|||
|
9 |
Y |
Y |
27 |
2.5 |
AoT使apk大8M (4) 启动时间减少2s |
(1)比较6和5:link sdk可以使得apk大小减小10M。
(2)比较5和4:link all可以使得apk大小再减小6M。
(3)比较8和5:llvm会使apk大小减小3M,但启动时间增加了2s。
(4)比较9和2:AoT会使apk大小变大8M
综合结论:
AndroidLinkMode对apk大小有很大影响,link all时apk文件最小。对启动时间基本无影响。
EnableLLMV会使apk大小减小,但启动时间变长。
AotAssemblies 使apk大小变大。
AotAssemblies 使启动时间变短。(这个是间接得出的结论,因为启动时间变化的因素中:link mode无影响,LLVM使时间变长,Bundle基本无影响,那么使启动时间变短的只能是AotAssemblies )
BundleAssemblies 对文件大小、启动时间的影响较小。
结论:
apk大小和启动时间是互斥的。建议的选项配置:使用BundleAssemblies、AotAssemblies AndroidLinkMode(sdk & user,也就是all),不使用EnableLLMV。
同时可以得到,Xamarin.Froms程序,apk大小大约20M,启动时间2秒。
Xamarin App文件(apk)大小和启动时间的影响因素的更多相关文章
- Xamarin生成的APK大小分析
原文:Xamarin生成的APK大小分析 刚接触Xamarin都会被Xamarin的售价吓一跳,另外就是它生成的APK大小,官方也有相关的说明,这里加上自己的理解同意讲解下: 以下是针对Android ...
- 6.关于Xamarin Android对APK包大小的处理
降低学习成本是每个.NET传教士义务与责任. 建立生态,保护生态,见者有份. 对于apk 包的大小大家都是很敏感的,虽然现在安卓手机的性能和存储越来越厉害了.本着能少一点是一点的态度,我们还是要深入理 ...
- app的apk 安装的方法--adb--命令安装 (含把apk放某个文件夹,每次启动自己安装)
adb安装 1.在app自动化之前,首先手机上有要被测试的app,如何把电脑本地上的app安装到手机上呢?可以在运行自动化代码前,在cmd输入adb指令,把电脑app安装到手机上 adb instal ...
- 把app(apk和ipa文件)安装包放在服务器上供用户下方法
怎么把app(apk和ipa文件)安装包放在服务器上供用户下载? IIS服务器网站不能下载.apk文件的原因:IIS的默认MIME类型中没有.apk文件,所以无法下载.解决办法:给.apk格式文件添加 ...
- FileSizeUtil【获取文件夹或文件的大小】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 获取文件夹或者文件的大小,可以指定单位,也可以自动计算合适的单位值. 效果图 代码分析 常用的方法: getFolderOrFile ...
- Android性能优化-减小APK大小
前言 用户通常会避免下载比较大的应用,特别是连接到2G和3G网络,或者按流量收费的设备.这篇文章描述了如何减小apk的大小,帮助你让更多的用户下载你的app. 一 理解APK的结构 在讨论如何减小ap ...
- Android开发——减小APK大小
0. 前言 APK的大小对APP的加载速度,使用内存大小和消耗功率多少有一定影响.如何减小APK的大小对于Android开发者是一个永恒的话题. 查阅了很多相关资料,并将其做了删减以及总结.本文原创, ...
- 程序性能优化之APK大小优化(六)上
阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击:https://space.bilibili.com/474380680 本篇文章将继续从APK瘦身来介绍APK大小优化:文章主要内容从理 ...
- 限制Xamarin获取图片的大小
限制Xamarin获取图片的大小在App开发中,经常会使用网络图片.因为这样不仅可以减少App的大小,还可以动态更新图片.但是手机使用网络环境千差万别.当网络环境不是理想的情况下,加载网络图片就是一个 ...
随机推荐
- 【转】JDBC学习笔记(8)——数据库连接池(dbcp&C3P0)
转自:http://www.cnblogs.com/ysw-go/ JDBC数据库连接池的必要性 一.在使用开发基于数据库的web程序时,传统的模式基本是按一下步骤: 1)在主程序(如servlet/ ...
- Linux - 进程间通信 - 匿名管道
一.概念:进程间通信( IPC,InterProcess Communication) 每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进城之间要交换数据必须通过内 ...
- File Transfer
本博客的代码的思想和图片参考:好大学慕课浙江大学陈越老师.何钦铭老师的<数据结构> 代码的测试工具PTA File Transfer 1 Question 2 Explain First, ...
- windows下批量换程序——运维常用
Windows一批机器,需要批量换程序.写个脚本给大家. net stop sharedaccess (关闭防火墙) del /s d:\*.log d:\*.vbs d:\*.pdb d:\*.vb ...
- linux管道(|)与重定向(<>)的异同
共同点:管道和重定向都改变程序的标准输入或者标准输出 区别: 管道(|)两边都是程序(命令),而重定向(<>)只有左边是程序(命令).即是,管道通过两个子进程来改变两边命令的输入或输出,重 ...
- 在ABP框架中使用MapTo容易犯的错误
用自己的话说:MapTo其实就是两个实体间的数据转换.不用像以前那样p.name=p1.name 这样赋值,一旦实体的属性多到十几个以上的时候,这样赋值代码就显得有些臃肿了,如下面: Resource ...
- Angular2.js——表单(上)
表单创建一个有效.引人注目的数据输入体验.Angular表单协调一组数据绑定控件,跟踪变更.验证输入的有效性,并且显示错误信息. 接下来,主要内容有: 1.使用组件和模板构建Angular表单: 2. ...
- .net 程序集
前言:用了几天的时间把高级编程里面程序集一章看完了,原来自己只知道写代码,右键添加引用,从来也不知道操作的实质是什么,微软总是这个套路,鼠标点点就能把任务完成,这对新手友好但是对要通透了解程序执行和内 ...
- Linux使用Jexus托管Asp.Net Core应用程序
第一步 安装.Net Core环境 安装 dotnet 环境参见官方网站 https://www.microsoft.com/net/core. 选择对应的系统版本进行安装.安装完成过后 输入命令查看 ...
- 如何利用动态URL提升SEO及处理业务逻辑
如果你正在建设一个新网站或者对现有网站重新设计,我们认为应该将网站的 URL 转换为用户友好的 URL,或搜索引擎友好的 URL,这类 URL 也称为语义 URL(Semantic URL).哪些UR ...