天天看點

Xamarin生成的APK大小分析剛接觸Xamarin都會被Xamarin的售價吓一跳,另外就是它生成的APK大小,官方也有相關的說明,這裡加上自己的了解同意講解下:以下是針對Android平台而言(Xamarin.Android和Xamarin.Forms)、Xamarin Studio(VS也差不多)PS:純屬個人了解,錯誤難免

答案是肯定的,Xamarin.Android的運作是依靠.net平台,而不是java虛拟機,apk裡面必須将相關的運作庫打包進去.

Xamarin的apk分為debug和release之分,有的人在項目的bin/debu/目錄下發現生成的apk檔案隻有1-2M,那時候肯定心理還贊揚了xamarin一番,但那并不是可發行的安裝包,前面說過,Xamarin.Android的運作必須依靠.Net運作庫,debug下生成的apk是沒有帶運作庫的,是以會非常小,你調試的時候IDE會自動幫你安裝一個Mono Runtime的apk,沒錯,這就是運作庫,debug下的apk運作必須依靠這個幾十M的大東西才能運作。是以千萬不要直接直接将debug下的apk檔案拿給别人安裝,結果顯而易見。

而bin/release/檔案夾下才能真正的apk,注意:apk檔案生成必須調試或者run as打包後才會有,如果隻是build,是不會有的

看下面

Xamarin生成的APK大小分析剛接觸Xamarin都會被Xamarin的售價吓一跳,另外就是它生成的APK大小,官方也有相關的說明,這裡加上自己的了解同意講解下:以下是針對Android平台而言(Xamarin.Android和Xamarin.Forms)、Xamarin Studio(VS也差不多)PS:純屬個人了解,錯誤難免

這個東西的作用下面的解釋也是很清楚了,快速部署(Fater delayment during development),如果開發過原生android的,會發現xamarin每次調試運作的速度會快很多,是以推薦在調試的時候勾選,會縮短部署時間。

        但是release時千萬不要手賤勾選這個這個東西(release是預設是不勾選的),然後你的apk噌噌噌的達到了20多M。

VIP功能,預設的Xamarin.Android是會将你所有引用的dll檔案直接方法哦/asserts/檔案夾,是以你用解壓你的apk,可以發現你全部引用的dll檔案.......

         勾選該選項後,xamarin會将你引用的dll檔案使用工具(打包的時候會彈出的黑框框,那就是了)全部壓縮成一個.so檔案,并放到apk的/lib/...檔案夾中,這個步驟會視你引用的dll多少減少apk大小

這個更加明确了,都叫你别在release時勾選了,跟勾選相比大概減少幾百KB

--------------------------------------------------------------------------------------------------------------------------------------

Xamarin生成的APK大小分析剛接觸Xamarin都會被Xamarin的售價吓一跳,另外就是它生成的APK大小,官方也有相關的說明,這裡加上自己的了解同意講解下:以下是針對Android平台而言(Xamarin.Android和Xamarin.Forms)、Xamarin Studio(VS也差不多)PS:純屬個人了解,錯誤難免

這個上面也是有解釋的,大概意思:會在編譯的時候将未引用的類庫啊、資源啊移除,來減少apk大小;但是如果你使用了反射機制,不要link all assemblies,否則可能你要用到的資源已經被IDE剔除了。

是以,一般情況下,使用link SDK assemblies only就行了

Xamarin生成的APK大小分析剛接觸Xamarin都會被Xamarin的售價吓一跳,另外就是它生成的APK大小,官方也有相關的說明,這裡加上自己的了解同意講解下:以下是針對Android平台而言(Xamarin.Android和Xamarin.Forms)、Xamarin Studio(VS也差不多)PS:純屬個人了解,錯誤難免

通俗的将就是支援的CPU類型,關于android版本與指令集的關系:

起初android1.6:隻支援armv4與armv5te指令集。

到了android2.0:增加了支援arm-vfp,armv6,armv6t2指令集。

到了android2.2:增加支援armv7-a指令集。

如果項目隻包含了

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的大小

版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。