在這篇 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大小 |
---|---|
模式1 | 51.5 MB |
模式2 | 23.3 MB |
模式3 | 126 MB |
模式4 | 63.9 MB |
模式5 | 132 MB |
模式6 | 64.3 MB |
當我們沒有開啟
將組譯碼組合成機器碼
模式,這個專案內的所有組件將會存在於 APK 檔案內的 assemblies
目錄下,底下將是模式1的 APK 檔案架構。
我們可以切換到
assemblies
目錄下,並且以組件檔案大小作排列,我們看到,最大的檔案那就是 Mono.Android.dll
這個組件,大小為 21.5 MB
。
可是,當我們查看模式2 (
連結器:僅限 SDK 組譯碼
) 的狀態下的 APK 檔案,切換到 assemblies
目錄下,並且以組件檔案大小作排列,我們看到,最大的檔案那就是 mscorlib.dll
這個組件,大小為 2.10 MB
。
所以,我們知道,當啟用了連結器模式,我們所產生的 APK 檔案大小將會明顯的小了許多,而且,就如同 Xamarin 官方文件對於連結器的說明文件描述一下,連結器會將這個專案內,沒有用到的類別、方法等等,從組件中移除,這樣將會使得您的 APK 檔案大幅瘦身下來。
至於要使用哪種專案屬性模式,來建置您的最終封存的檔案,就取決於您的決定了。
模式1
連結器:無
將組譯碼組合成機器碼:無選取
AOT 編譯:無選取
使用 LLVM 最佳化編譯器:無選取
模式2
連結器:僅限 SDK 組譯碼
將組譯碼組合成機器碼:無選取
AOT 編譯:無選取
使用 LLVM 最佳化編譯器:無選取
模式3
連結器:無
將組譯碼組合成機器碼:選取
AOT 編譯:選取
使用 LLVM 最佳化編譯器:選取
模式4
連結器:僅限 SDK 組譯碼
將組譯碼組合成機器碼:選取
AOT 編譯:選取
使用 LLVM 最佳化編譯器:選取
模式5
連結器:無
將組譯碼組合成機器碼:無選取
AOT 編譯:選取
使用 LLVM 最佳化編譯器:選取
模式6
連結器:僅限 SDK 組譯碼
將組譯碼組合成機器碼:無選取
AOT 編譯:選取
使用 LLVM 最佳化編譯器:選取
沒有留言:
張貼留言