XamarinForms 系列課程

特別說明

2017/06/06

Xamarin.Android 各種封存屬性測試

在這篇 Xamarin 筆記中,將會針對 https://github.com/vulcanlee/XamarinHandsOnLab/tree/master/XFTask 專案,測試不同的專案選項,所封存的 apk 檔案大小。
在這裡,所有的測試都是在 Release 建置,並且使用專案屬性的這四種設定選項。而且,另種測試結果的 APK 檔案,將會可以從這裡取得 https://github.com/vulcanlee/XamarinHandsOnLabBuild
  • 連結器
  • 將組譯碼組合成機器碼
  • AOT 編譯
  • 使用 LLVM 最佳化編譯器
我們進行了六種組合模式的 Xamarin.Android APK 檔案的封存,得到這些模式下所產生的 APK 檔案大小。從底下的測試結果,我們看到了,只要當我們把可以產生原生碼的功能( 將組譯碼組合成機器碼 / 使用 LLVM 最佳化編譯器) 功能開啟之後,在這個測試專案下,我們可以看得出,所得到的 APK 檔案就會變得比較大。
模式APK大小
模式151.5 MB
模式223.3 MB
模式3126 MB
模式463.9 MB
模式5132 MB
模式664.3 MB
當我們沒有開啟 將組譯碼組合成機器碼 模式,這個專案內的所有組件將會存在於 APK 檔案內的 assemblies目錄下,底下將是模式1的 APK 檔案架構。
模式11
我們可以切換到 assemblies 目錄下,並且以組件檔案大小作排列,我們看到,最大的檔案那就是 Mono.Android.dll 這個組件,大小為 21.5 MB
模式12
可是,當我們查看模式2 (連結器:僅限 SDK 組譯碼) 的狀態下的 APK 檔案,切換到 assemblies 目錄下,並且以組件檔案大小作排列,我們看到,最大的檔案那就是 mscorlib.dll 這個組件,大小為 2.10 MB
所以,我們知道,當啟用了連結器模式,我們所產生的 APK 檔案大小將會明顯的小了許多,而且,就如同 Xamarin 官方文件對於連結器的說明文件描述一下,連結器會將這個專案內,沒有用到的類別、方法等等,從組件中移除,這樣將會使得您的 APK 檔案大幅瘦身下來。
模式21
至於要使用哪種專案屬性模式,來建置您的最終封存的檔案,就取決於您的決定了。

模式1

連結器:無
將組譯碼組合成機器碼:無選取
AOT 編譯:無選取
使用 LLVM 最佳化編譯器:無選取

模式2

連結器:僅限 SDK 組譯碼
將組譯碼組合成機器碼:無選取
AOT 編譯:無選取
使用 LLVM 最佳化編譯器:無選取

模式3

連結器:無
將組譯碼組合成機器碼:選取
AOT 編譯:選取
使用 LLVM 最佳化編譯器:選取

模式4

連結器:僅限 SDK 組譯碼
將組譯碼組合成機器碼:選取
AOT 編譯:選取
使用 LLVM 最佳化編譯器:選取

模式5

連結器:無
將組譯碼組合成機器碼:無選取
AOT 編譯:選取
使用 LLVM 最佳化編譯器:選取

模式6

連結器:僅限 SDK 組譯碼
將組譯碼組合成機器碼:無選取
AOT 編譯:選取
使用 LLVM 最佳化編譯器:選取

沒有留言:

張貼留言