在 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 文档