答案是確定的,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的大小