1. 程式人生 > >C#使用Xamarin開發可移植移動應用進階篇(8.打包生成安卓APK並精簡大小),附源碼

C#使用Xamarin開發可移植移動應用進階篇(8.打包生成安卓APK並精簡大小),附源碼

demo page 模糊 icon 通過 itl 是不是 es2017 微軟

前言

系列目錄

C#使用Xamarin開發可移植移動應用目錄

源碼地址:https://github.com/l2999019/DemoApp

可以Star一下,隨意 - -

說點什麽..

嗯,前面講了那麽多,是時候生成一個APK在真機上玩玩了.

今天的學習內容?

也只講一個,如何打包生成安卓可安裝的APK並精簡大小.

正文

我記得,之前在寫安卓方面的文章的時候,有人就問過我.Xamarin.Android為什麽打包出來這麽大?隨便一個HelloWord就20-30MB?

嗯..今天我們就來解決這個問題..

我們先從指定一個應用程序圖標開始..

1.指定應用程序圖標

我們直接右鍵Android項目,屬性.選擇安卓清單.如下:

技術分享

在Application Icon選項中,我們可以任意選擇一個已有的圖片資源文件,並設置為應用程序的圖標.

就完成了 - - 是不是很簡單..

2.設置應用程序版本和名稱

VS2017裏面已經翻譯的比較完善了,我就不多解釋了..直接如下圖:

技術分享

3.精簡和收縮APK(重點)

3.1取消快速部署

首先我們進入技術分享

然後,我們將打包屬性中的如下兩項勾選取消:(註意:這裏是取消!!)

技術分享

3.2設置連接器,精簡Xamarin的引用

然後,我們向下滑,找到鏈接器屬性,設置如下:

技術分享

連接選擇,僅SDK程序集.(默認為無)

Xamarin.Android中的鏈接器采用靜態分析來確定Xamarin.Android應用程序使用或引用了哪些程序集,類型和類型成員。然後,鏈接器將丟棄未使用(或引用)的所有未使用的程序集,類型和成員。這就使得我們最終的應用大小得到了顯著的降低。例如,微軟官方的 HelloWorld例子,其APK的最終大小減少了83%:

  • 配置為:無 - Xamarin.Android 4.2.5大小= 17.4 MB
  • 配置為:僅限SDK組件 - Xamarin.Android 4.2.5大小= 3.0 MB

3.3設置Android ProGuard

ProGuard是一個Android SDK工具,用於鏈接和模糊Java代碼。ProGuard通常用於減少APK中大型附加庫(如Google Play服務)的占用空間來獲得較小的應用程序。

ProGuard會刪除未使用的Java字節碼,這就會讓生成的應用程序更小。

一般,在小型Xamarin.Android應用程序上使用ProGuard通常可以減少大約24%的大小

如果,在具有多個庫依賴性的較大應用程序上使用ProGuard通常可以實現更大的尺寸縮小。

ProGuard不是Xamarin.Android連接器的替代品。Xamarin.Android鏈接器鏈接托管代碼,而ProGuard鏈接Java字節碼。

生成過程是首先使用Xamarin.Android鏈接器來優化應用程序中的托管(C#)代碼,然後使用ProGuard(如果啟用)在Java字節碼級別優化APK。

啟用ProGuard的檢查,Xamarin.Android上運行所產生的APK ProGuard的工具。ProGuard配置文件在構建時由ProGuard生成和使用。

Xamarin.Android還支持自定義ProguardConfiguration構建操作。您可以將自定義ProGuard配置文件添加到項目中,右鍵單擊它,並將其作為構建操作選擇.

這裏,我們直接用默認的操作.也就是勾選它就可以了 如圖:

技術分享

4.存檔並發布生成APK

嗯..這就是我們的最後一步了,

第三步的內容設置完成後,我們就可以存檔了.

操作如圖:

技術分享

這樣,就會跳轉到存檔界面,如下:

技術分享

我們等待它打包完成.完成後,後面的齒輪會有個綠色的勾,如下圖:

技術分享

點擊分發,來完成最後的發布操作,如下圖:

技術分享

我們可以選擇谷歌play的證書,也可以自己創建一個臨時的證書.

這裏我們創建一個臨時的證書.如下圖:

技術分享

點擊+號,創建證書.並填寫如下圖的信息,請牢記你這裏輸入的密碼.

技術分享

完成創建後,我們直接選擇剛剛創建的證書,來進行分發.

技術分享

選中證書後,選擇另存為.然後選擇APK文件的存放路徑.

點擊保存,會讓你輸入證書的密碼.,我們填寫剛剛輸入的密碼.

技術分享

等待生成完成,就好了.

至此,我們就完成了整個APP的打包 精簡壓縮和發布流程.

寫在最後

本篇只是講解了APP的打包流程,作為一個發布的應用,當然不是這麽簡單就完事了.

為了保證安全性,我們雖然用ProGuard混淆了JAVA代碼,但是我們的.NET代碼並沒有混淆.通過解壓APK程序反編譯我們的dll,源碼就會很輕易的暴露..

下篇我們就來講解,如何混淆我們的.NET代碼

C#使用Xamarin開發可移植移動應用進階篇(8.打包生成安卓APK並精簡大小),附源碼