在 Visual Studio 中準備 APK

你完成了應用程式,在除錯模式下進行了測試,並且它執行良好。現在,你要準備好在 Google Play 商店中釋出。

Xamarin 文件提供了良好的資訊:

https://developer.xamarin.com/guides/android/deployment,_testing,_and_metrics/publishing_an_application/

Android Manifest

首先,在 Visual Studio 中,右鍵單擊解決方案資源管理器中的 Xamarin.Android 專案,然後選擇屬性。然後,轉到 Android Manifest 選項卡,檢視此螢幕:

StackOverflow 文件

與 Android Studio 或 Eclipse 不同,你不需要通過編寫設定 AndroidManifest.xml 檔案; Xamarin 和 Visual Studio 為你做到這一點。通過在類中宣告特定屬性,將活動,BroadcastReceivers 和服務插入到 Android Manifest

在此螢幕中,選項包括:

  • 應用程式名稱 :這是使用者可見的應用程式名稱。
  • 包名稱 :這是包名稱。它必須是唯一的,這意味著它不得使用與 Google Play 商店中其他應用相同的包名稱。
  • 應用程式圖示 :這是使用者可見的圖示,相當於 Android Studio 或 Eclipse 專案中使用的 @ drawable / ic_launcher。
  • 版本號 :Google Play 使用版本號進行版本控制。如果要為應用的更新版本釋出 APK,則必須為每個新升級新增 1 到此數字。
  • 版本名稱 :這是將顯示給使用者的版本名稱。
  • 安裝位置 :這決定了 APK 的安裝位置,裝置儲存空間或 SD 卡。
  • 所需許可權 :你可以在此處確定應用所需的許可權

Android 選項

在下面的螢幕中,你可以配置編譯器選項。在這裡使用正確的選項可以減少你的 APK 大小,並防止錯誤。

StackOverflow 文件

  • 配置活動(釋出)
  • 平臺活動(任何 CPU) 。這些是為 Google Play 商店構建 APK 所必需的。如果配置設定為除錯,Google Play 將不會接受該配置。
  • 使用共享執行時false 。如果將其設定為 true,則 APK 將使用 Mono Runtime 執行。通過 USB 除錯時會自動安裝 Mono Runtime,但不會在 Release APK 中安裝。如果裝置中未安裝 Mono Runtime,並且在 Release APK 中將此選項設定為 true,則應用程式將崩潰。
  • 每個選定的 ABI 生成一個包(.apk)false 。出於相容性原因,為儘可能多的平臺建立 APK。
  • 啟用 Multi-Dextrue ,但如果你的應用程式不是很複雜(即,方法少於 65536,請參見此處 ) ,你可以將其設定為 false。
  • 啟用 Proguardtrue 。這使 Proguard 工具能夠混淆應用程式中的 Java 程式碼。請注意,它不適用於 .NET 程式碼; 如果要混淆 .NET 程式碼,則必須使用 Dotfuscator 。有關 Proguard for Xamarin.Android 的更多資訊,請點選此處
  • 啟用開發人員檢測(除錯和分析) : 對於 Release APK,為 false
  • 連結SDK 和使用者程式集。這將使 Xamarin 連結器從 SDK 和你的程式碼中刪除所有未使用的類,從而減小 APK 大小。

重要

Xamarin.Linker 有時可能會刪除程式碼似乎沒有使用的類,特別是如果它們位於專案的 Core(PCL 庫)中。為避免這種情況,你可以將連結設定為“僅限 Sdk 程式集”或使用類中的保留屬性,例如:

PreserveAttribute.cs

namespace My_App_Core.Models
{
    public sealed class PreserveAttribute : System.Attribute
    {
        public bool AllMembers;
        public bool Conditional;
    }
}

在課堂上:

using System;

namespace My_App_Core.Models
{
    [Preserve(AllMembers = true)]
    public class ServiceException : Exception
    {
        public int errorCode;

        [Preserve(AllMembers = true)]
        public ServiceException() { }

        [Preserve(AllMembers = true)]
        public ServiceException(int errorCode)
        {
            this.errorCode = errorCode;
        }
    }
}
  • 支援的體系結構 : 出於相容性原因,選擇 all

配置完所有內容後,重建專案以確保它成功構建。

為釋出模式建立 APK

你已完成為 Release 版配置 Android 專案。下面的教程展示瞭如何在 Visual Studio 中生成 APK。可以在此處找到 Xamarin 文件的完整教程:

https://developer.xamarin.com/guides/android/deployment,_testing,_and_metrics/publishing_an_application/part_2_-_signing_the_android_application_package/

要建立 APK 檔案,請在解決方案資源管理器中右鍵單擊 Xamarin.Android 專案,然後選擇存檔…

StackOverflow 文件

這將開啟存檔管理器並開始存檔專案,準備建立 APK 檔案。

StackOverflow 文件

完成專案歸檔後,單擊“分發…”繼續。

StackOverflow 文件

Distribute 螢幕將顯示兩個選項:Ad-hoc 和 Google Play。第一個將建立一個 APK 並將其儲存在你的計算機中。第二個將直接在 Google Play 中釋出該應用。

建議選擇第一個,這樣你就可以根據需要在其他裝置上測試 APK。

StackOverflow 文件

在以下螢幕中,需要 Android 金鑰儲存區來對 APK 進行簽名。如果你已經有一個,可以通過單擊匯入…來使用它; 如果不這樣做,可以通過單擊+建立新的 Android 金鑰庫。

StackOverflow 文件

建立一個新的 Android Key Store 螢幕:

StackOverflow 文件

要建立 APK,請單擊另存為。系統可能會提示你鍵入金鑰儲存區密碼。

StackOverflow 文件

StackOverflow 文件

StackOverflow 文件

完成後,你可以單擊存檔螢幕上的開啟資料夾以檢視生成的 APK 檔案。

StackOverflow 文件

StackOverflow 文件