生成适用于 Android 的 Xamarin 应用

重要

Visual Studio App Center 计划于 2025 年 3 月 31 日停用。 虽然可以继续使用 Visual Studio App Center,直到它完全停用,但你可以考虑迁移到几个建议的替代方法。

详细了解支持时间线和替代方法。

若要开始生成第一个 Xamarin Android 应用,必须:

  1. (GitHub、Bitbucket、VSTS、Azure DevOps) 连接到存储库服务帐户。
  2. 选择应用所在的存储库和分支。
  3. 选择要生成的 Android 项目。
  4. 设置第一个生成。

注意

若要使应用在真实设备上运行,必须使用有效的 KeyStore 对生成进行签名。

1. 链接存储库

如果以前未连接到存储库服务帐户,必须先执行此操作。 连接帐户后,选择 Xamarin 项目所在的存储库。 必须具有管理员和拉取权限才能为存储库设置生成。

2. 选择分支

选择存储库后,选择要生成的分支。 默认情况下,App Center 会列出所有活动分支。

3. 配置生成

必须在第一次生成之前配置 Xamarin 项目。

3.1. 生成触发器

默认情况下,生成服务使用持续集成,因此每次开发人员推送到配置的分支时都会触发新的生成。 如果希望手动触发新版本,可以在配置窗格中更改此设置。

3.2. 项目和配置

如果存储库中的可用项目位于分析范围内,则会填充这些项目。 为 Android 版本选择正确的项目,并选择适当的配置。

注意

为了获得最佳性能,分析当前限制为四个目录级别,包括存储库的根目录。

3.3. Mono 版本

App Center 允许将不同的 Mono 环境与相应的 Xamarin.Android SDK 捆绑在一起用于生成。 这样,我们便能保持向后兼容性,同时支持最新功能。 新分支配置的默认 Mono 版本是最新的稳定版本。 可以选择使用以前的 Mono 环境之一来生成较旧版本的框架或库。

在生成配置中选择 Mono 版本时,捆绑的 Xamarin.Android SDK 版本将显示在其旁边。 有关 Xamarin SDK 版本更新的详细信息,请阅读 Xamarin 发布博客

3.3.1. .NET Core 版本

将根据用于生成的 Mono 版本自动选择正确的 .NET Core 版本,并且无法覆盖。 可以在下表中查看 Mono 到我们的服务使用的 .NET Core 的映射:

Mono .NET Core
<= 5.18 2.2.105
6.0 2.2.300
6.4 3.0.100
6.6 3.1.100
6.8 3.1.200
6.10 3.1.300
6.12 3.1.401

3.4. 生成 Android App Bundle (.aab)

Android 应用程序包是一种分发格式,用于为特定设备生成优化的 APK。 可以将其上传到 Play 商店。 可以在 官方 Android 文档Xamarin.Android 9.4 发行说明中找到有关 Android 应用捆绑包的详细信息,这也可以帮助你决定是否要与常规捆绑包一起构建 .apk.

切换 Android 应用程序包选项以生成 .aab.apk.csproj如果 文件包含在 aab 属性中AndroidPackageFormat,则此选项将自动切换为打开状态。 .aab Xamarin.Android 9.4 及更高版本支持生成 。

3.5. 递增版本号

启用后,应用 AndroidManifest.xml 中的版本代码会针对每个生成自动递增。 更改发生在生成前,不会提交到存储库。

3.6. 代码签名

如果启用,成功生成将生成一个 .apk 文件和一个附加 .aab 文件。 若要将内部版本发布到 Play Store,必须使用有效的密钥存储和别名对其进行签名。 若要对分支生成的生成进行签名,请在配置窗格中启用代码签名,上传密钥存储,并在配置窗格中提供所需的值。 可以阅读更 详细的代码签名说明.aab将使用与 相同的凭据对 .apk进行签名。

3.7. 在真实设备上启动成功的生成

使用新生成的 .apk 文件测试应用是否在真实设备上启动。 这增加了大约 10 分钟的总生成时间。 我们的 测试集成指南中介绍了详细信息。

3.8. Nuget 还原

NuGet.config如果文件签入存储库,并且位于文件旁边.sln或存储库的根级别,则 App Center 会在添加专用 NuGet 源时还原这些源,如以下示例所示。 可以使用 环境变量安全地添加凭据:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="nuget" value="https://api.nuget.org/v3/index.json" />
    <add key="MyGet" value="https://www.myget.org/F/MyUsername/api/v2/index.json" />
    <add key="MyAuthNuget" value="https://nuget.example.com/v2/index.json" />
  </packageSources>
  <activePackageSource>
    <add key="All" value="(Aggregate source)" />
  </activePackageSource>
  <packageSourceCredentials>
    <MyAuthNuget>
      <add key="Username" value="$USER_VARIABLE" />
      <add key="ClearTextPassword" value="$PASSWORD_VARIABLE" />
    </MyAuthNuget>
  </packageSourceCredentials>
</configuration>

如果配置复杂且需要更多信息,请参阅 配置 NuGet 行为

3.9. 分发生成

可以将分支中的每个成功生成配置为分发到以前创建的通讯组或存储目标。 可以从分发服务中添加新的通讯组或 配置存储连接 。 始终有一个名为“协作者”的默认通讯组,其中包含有权访问该应用的所有用户。

注意

如果分发到 Google Play 商店,则首选 Android App Bundle (.aab) ,并且将在启用时分发。 对于 App Center 通讯组和Intune存储目标,即使.aab还生成了 ,也会使用常规.apk

4.生成结果

生成触发后,生成将处于以下状态之一:

  • queued - 生成在等待资源释放的队列中。
  • 生成 - 生成正在运行。
  • succeeded - 生成已成功完成。
  • failed - 生成因失败而停止。 可以通过下载并检查生成日志来排查错误。
  • 已取消 - 生成已被用户操作取消或超时。

4.1. 生成日志

对于已完成的生成 (成功或失败) ,请下载日志以了解有关生成过程的详细信息。 App Center 提供包含以下文件的存档:

|-- 1_build.txt (this is the general build log)
|-- build (this folder contains a separate log file for each build step)
    |-- <build-step-1>
    |-- <build-step-2>
    |--
    |-- <build-step-n> (e.g. n_Post Job Cleanup.txt)

位于存档) 目录中的生成步骤日志 (build/ 有助于了解生成失败的步骤和原因。

4.2. 应用 (.apk)

该文件 .apk 是存储 Android 应用的 Android 应用程序打包文件。 如果生成已正确签名,则可以在 .apk 真实设备上安装该文件并将其部署到 Play Store。 如果生成尚未签名,应用可以在仿真器上运行或用于其他目的。

支持的版本和要求

App Center 支持可移植类库 (PCL) 和 .NET Standard 项目。 有关 .NET Standard 的版本,请参阅 云生成计算机

App Center 不支持 Xamarin 组件存储中的组件,我们建议在 NuGet 包可用时使用它们。 如果使用的是无法替换的组件,请与我们联系。 请参阅 帮助和反馈