答案是确定的,Xamarin.Android的运行是依靠.net平台,而不是java虚拟机,apk里面必须将相关的运行库打包进去.java
Xamarin的apk分为debug和release之分,有的人在项目的bin/debu/目录下发现生成的apk文件只有1-2M,那时候确定心理还赞赏了xamarin一番,但那并非可发行的安装包,前面说过,Xamarin.Android的运行必须依靠.Net运行库,debug下生成的apk是没有带运行库的,因此会很是小,你调试的时候IDE会自动帮你安装一个Mono Runtime的apk,没错,这就是运行库,debug下的apk运行必须依靠这个几十M的大东西才能运行。因此千万不要直接直接将debug下的apk文件拿给别人安装,结果显而易见。android
而bin/release/文件夹下才能真正的apk,注意:apk文件生成必须调试或者run as打包后才会有,若是只是build,是不会有的架构
看下面工具
这个东西的做用下面的解释也是很清楚了,快速部署(Fater delayment during development),若是开发过原生android的,会发现xamarin每次调试运行的速度会快不少,因此推荐在调试的时候勾选,会缩短部署时间。ui
可是release时千万不要手贱勾选这个这个东西(release是默认是不勾选的),而后你的apk噌噌噌的达到了20多M。spa
VIP功能,默认的Xamarin.Android是会将你全部引用的dll文件直接方法哦/asserts/文件夹,因此你用解压你的apk,能够发现你所有引用的dll文件........net
勾选该选项后,xamarin会将你引用的dll文件使用工具(打包的时候会弹出的黑框框,那就是了)所有压缩成一个.so文件,并放到apk的/lib/...文件夹中,这个步骤会视你引用的dll多少减小apk大小debug
这个更加明确了,都叫你别在release时勾选了,跟勾选相比大概减小几百KB调试
--------------------------------------------------------------------------------------------------------------------------------------code
这个上面也是有解释的,大概意思:会在编译的时候将未引用的类库啊、资源啊移除,来减小apk大小;可是若是你使用了反射机制,不要link all assemblies,不然可能你要用到的资源已经被IDE剔除了。
因此,通常状况下,使用link SDK assemblies only就好了
通俗的将就是支持的CPU类型,关于android版本与指令集的关系:
起初android1.6:只支持armv4与armv5te指令集。
到了android2.0:增长了支持arm-vfp,armv6,armv6t2指令集。
到了android2.2:增长支持armv7-a指令集。
引用自: 跳转若是项目只包含了 armeabi,那么在全部Android设备均可以运行; 若是项目只包含了 armeabi-v7a,除armeabi架构的设备外均可以运行; 若是项目只包含了 x86,那么armeabi架构和armeabi-v7a的Android设备是没法运行的; 若是同时包含了 armeabi, armeabi-v7a和x86,全部设备均可以运行,程序在运行的时候去加载不一样平台对应的so,这是较为完美的一种解决方案,同时也会致使包变大。
引用自:跳转
结论:如今通常的手机都是android4.0以上的系统,CPU也都支持 armeabi-v7a,只要不是要支持太过老旧的设备,能够只勾选armeabi-v7a(默认勾选),若是要支持intel CPU的设备,能够也勾选X86
这个选项对apk大小的影响最大,每种类型占用的最少1M的大小