MAUI 和 Xamarin 入门

重要

Visual Studio App Center 于 2025 年 3 月 31 日停用,但分析和诊断功能除外,这些功能将继续受支持,直到 2026 年 6 月 30 日。 了解详细信息

App Center SDK 使用模块化体系结构,因此你可以使用任何或所有服务。

让我们开始在您的应用中设置 App Center .NET SDK,从而使用 App Center Analytics 和 App Center 崩溃报告。 若要将 App Center Distribute 添加到应用,请查看 App Center Distribute 的文档

1.先决条件

在开始之前,请确保满足以下先决条件:

  • 项目已在 Visual Studio 或 Visual Studio for Mac 中设置好。
  • 你的目标是运行 iOS 11.0 或更高版本或 Android 5.0(API 级别 21)或更高版本的设备。
  • 你未使用提供崩溃报告功能的任何其他 SDK。

支持的平台:

  • MAUI iOS
  • MAUI Android
  • MAUI Windows
  • .NET 6.0 macOS
  • Xamarin.Android
  • Xamarin.iOS
  • Xamarin.Mac
  • Xamarin.Forms (iOS、macOS Android、UWP 和 Windows 桌面应用程序)

1.1 MAUI

注释

目前,App Center 门户中没有 MAUI 平台。 请使用适用于 iOS 和 Android 和 UWP for Windows 的 Xamarin

1.2 关于 Xamarin.Android

在 App Center 门户中创建应用,其中 Android 作为 OS,Xamarin 作为平台。

1.3 关于 Xamarin.iOS

在 App Center 门户中创建应用,使用 iOS 作为 OS, 将 Xamarin 作为平台。

1.4 关于 Xamarin.Mac

在 App Center 门户中创建应用, 其中 macOS 作为 OS,Xamarin 作为平台。

警告

存在一个已知问题,导致应用无法上传到 App Store。 请关注 github 上的进度。

1.5 关于 Xamarin.Forms (iOS、macOS、Android、UWP 和 Windows 桌面)

在 App Center 上创建 5 个应用 - 每个 OS 一个应用。

需要选择 Xamarin 作为 Android、iOS 和 macOS 应用程序的平台(UWP 和桌面应用程序没有 Xamarin 选项)。

对于 Windows 桌面macOS 应用程序,必须配置项目才能与 Xamarin.Forms 平台兼容。

2.在 App Center 门户中创建应用以获取应用机密

如果已在 App Center 门户中创建了应用,则可以跳过此步骤。

  1. 前往 appcenter.ms
  2. 注册或登录并点击门户右上角的蓝色按钮,显示 “添加新 ”,并从下拉菜单中选择“ 添加新应用 ”。
  3. 输入应用的名称和可选说明。
  4. 根据上述项目选择适当的 OS 和平台。
  5. 点击右下角的按钮,显示 “添加新应用”。

创建应用后,可以在 App Center 门户的“设置”页上获取其应用机密。 在 “设置” 页面的右上角,单击 三个垂直点 并选择 Copy app secret 获取应用机密。

3.将 App Center SDK 添加到解决方案

可以使用 Visual Studio 或包管理器控制台集成 App Center SDK。

注释

App Center SDK 使用 强名称程序集 来与使用强名称签名的应用程序兼容。

Visual Studio for Mac

  • 打开 Visual Studio。
  • 单击“文件>打开”并选择解决方案。
  • 在解决方案导航器中,右键单击 “包 ”部分,然后选择 “添加 NuGet 包...”
  • 搜索 App Center,然后选择 App Center AnalyticsApp Center 崩溃
  • 单击“ 添加包”。

Visual Studio for Windows

  • 打开 Visual Studio。
  • 单击“文件>打开”并选择解决方案。
  • 在解决方案导航器中,右键单击 “引用 ”并选择“ 管理 NuGet 包”。
  • 搜索 App Center,并安装 Microsoft.AppCenter.AnalyticsMicrosoft.AppCenter.Crashes 包。

包管理器控制台

  • Visual Studio 中打开控制台。 为此,请选择“工具>NuGet 包管理器>控制台”。
  • 如果在 Visual Studio for Mac 中工作,请确保已安装 NuGet 包管理扩展。 为此,请选择 Visual Studio>扩展,根据需要搜索 NuGet 并安装。
  • 在控制台中键入以下命令:
Install-Package Microsoft.AppCenter.Analytics
Install-Package Microsoft.AppCenter.Crashes

在应用程序中集成 SDK 后,可以启动 SDK 并使用 App Center 服务。

注释

如果在可移植项目(如 Xamarin.Forms)中使用 App Center SDK,则必须在每个项目中安装包:可移植项目、Android 和 iOS 包。 为此,应打开每个子项目,并按照 Visual Studio for MacVisual Studio for Windows 部分中所述的相应步骤进行操作。

4.启动 SDK

若要使用 App Center,必须选择加入要使用的模块。 默认情况下,不会启动任何模块,并且必须在启动 SDK 时显式调用每个模块。

4.1 添加 using 语句

在以下文件中添加相应的命名空间:

  • MAUIXamarin.Forms - App.xaml.cs
  • Xamarin.iOSXamarin.Mac - AppDelegate.cs
  • Xamarin.Android - MainActivity.cs
using Microsoft.AppCenter;
using Microsoft.AppCenter.Analytics;
using Microsoft.AppCenter.Crashes;

4.2 添加 Start() 方法

4.2.1 MAUI 和 Xamarin.Forms

需要在 App Center 门户上为每个平台创建不同的应用程序。 对于每个应用,你将有不同的应用机密。 打开项目的 App.xaml.cs 文件,并在构造函数中添加以下行(或在 OnStart() Xamarin.Forms 的方法中)。

AppCenter.Start("ios={Your App Secret};macos={Your App Secret};android={Your App Secret};uwp={Your App Secret};windowsdesktop={Your App Secret}", typeof(Analytics), typeof(Crashes));

如果需要单独启动 App Center 服务,应:

  1. 配置或启动应用密钥。
  2. 如果可以多次调用代码,请检查是否已配置 App Center。
  3. 在不使用应用机密的情况下启动所需的服务。
AppCenter.Configure("ios={Your App Secret};macos={Your App Secret};android={Your App Secret};uwp={Your App Secret};windowsdesktop={Your App Secret}");
if (AppCenter.Configured)
{
    AppCenter.Start(typeof(Analytics));
    AppCenter.Start(typeof(Crashes));
}

4.2.2 Xamarin.Android

注释

如果使用适用于 Android 的 HockeyApp SDK,请确保在 App Center SDK 之后 初始化 HockeyApp SDK。

打开项目的 MainActivity.cs 文件,并在 Start() 方法中添加 OnCreate() 调用

AppCenter.Start("{Your App Secret}", typeof(Analytics), typeof(Crashes));

注释

如果您的应用程序具有后台服务或多个入口点,例如广播接收器、导出的活动或内容提供程序,建议在AppCenter回调中启动Application.OnCreate

4.2.3 Xamarin.iOS 和 Xamarin.Mac

注释

应用中不能有多个活动崩溃报告 SDK。 禁用其他 SDK 的崩溃报告功能,以确保 App Center 能够捕获崩溃。

打开项目的 AppDelegate.cs 文件,并在 Start() 方法中添加 FinishedLaunching() 调用

AppCenter.Start("{Your App Secret}", typeof(Analytics), typeof(Crashes));

注释

如果使用崩溃模块,则必须在 UI 主线程中调用此方法,并避免在该方法返回之前启动后台任务。 从另一个线程捕获的任何 null 引用异常在 Crashes 初始化时,可能会触发系统崩溃并忽略抓取子句。 AppCenter.Start方法返回后,可以安全地再次尝试/捕获 null 引用异常。 可以在 Signals 和第三方崩溃报告工具 文章中了解更多关于此计时问题的原因。

警告

不建议在源代码中嵌入应用机密。

重要

大括号用于显示实际应用机密的位置,不要在 Start 调用中放置大括号。

注释

对于 iOS 应用程序,在你的应用中无法同时使用多个活动的崩溃报告软件开发工具包(SDK)。 禁用其他 SDK 的崩溃报告功能,以确保 App Center 能够捕获崩溃。

4.3 将占位符替换为应用机密

请确保将 {Your App Secret} 文本替换为您应用程序中的实际值。 可以在 App Center 门户的 “入门 ”页面或 “设置” 页上找到应用机密。

“入门”页包含上述代码示例,其中包含应用机密,可以复制粘贴整个示例。

上面的示例演示如何使用 Start() 方法,并包含 App Center Analytics 和 App Center Crashes。

如果不想使用这两个服务之一,请从上述方法调用中删除相应的参数。

除非在 start 方法中显式指定每个模块作为参数,否则不能使用该 App Center 服务。 此外, Start() API 只能在应用的生命周期中使用一次 – 所有其他调用都会将警告记录到控制台,并且只有第一次调用中包含的模块可用。

例如 - 如果要加入 App Center Analytics,应按如下所示修改调用 Start()

4.3.1 MAUI 和 Xamarin.Forms

AppCenter.Start("ios={Your App Secret};macos={Your App Secret};android={Your App Secret};uwp={Your App Secret};windowsdesktop={Your App Secret}", typeof(Analytics));

4.3.2 Xamarin Native

AppCenter.Start("{Your App Secret}", typeof(Analytics));

很好,你已经准备好在门户上可视化由 SDK 自动收集的分析和崩溃数据。

查看 App Center AnalyticsApp Center 崩溃 的文档,了解如何自定义和使用这两个服务的更高级功能。

若要了解如何开始使用应用内更新,请阅读 App Center Distribute 的文档。

注释

使用 Xamarin Forms 中的可移植 API,你将看到来自所有模块的 API,但并非所有这些 API 在 UWPWindows 桌面 平台上都受支持,在 UWPWindows 桌面 应用程序上运行时不执行任何作。 特别是 UWP 和 Windows 桌面不支持以下模块: 分发。 具有返回类型的任何方法在 UWP 和 Windows 桌面应用程序上将返回 null(对于对象)、0(对于数字)或者 false(对于布尔值)。

5. 备份规则 (仅限 Android)

注释

面向 Android 6.0(API 级别 23)或更高版本的应用会自动启用自动备份。 

注释

如果已有包含备份规则的自定义文件,请切换到第三步。

如果使用自动备份来避免获取有关设备的错误信息,请执行以下步骤:

5.1. 对于 Android 11(API 级别 30)或更低版本。

  1. Resources/xml 文件夹中创建 appcenter_backup_rule.xml 文件。
  1. 打开项目的 AndroidManifest.xml 文件。 将 android:fullBackupContent 属性添加到 <application> 元素。 它应指向 appcenter_backup_rule.xml 资源文件。
android:fullBackupContent="@xml/appcenter_backup_rule"
  1. 将以下备份规则添加到 appcenter_backup_rule.xml 文件:
<full-backup-content xmlns:tools="http://schemas.android.com/tools">
      <exclude ___domain="sharedpref" path="AppCenter.xml"/>
      <exclude ___domain="database" path="com.microsoft.appcenter.persistence"/>
      <exclude ___domain="database" path="com.microsoft.appcenter.persistence-journal"/>
      <exclude ___domain="file" path="error" tools:ignore="FullBackupContent"/>
      <exclude ___domain="file" path="appcenter" tools:ignore="FullBackupContent"/>
  </full-backup-content>

5.2. 对于 Android 12(API 级别 31)或更高版本。

  1. Resources/xml 文件夹中创建 appcenter_backup_rule.xml 文件。
  1. 打开项目的 AndroidManifest.xml 文件。 将 android:dataExtractionRules 属性添加到 <application> 元素。 它应指向 appcenter_backup_rule.xml 资源文件。
android:dataExtractionRules="@xml/appcenter_backup_rule"
  1. 将以下备份规则添加到 appcenter_backup_rule.xml 文件:
<data-extraction-rules xmlns:tools="http://schemas.android.com/tools">
    <cloud-backup>
        <exclude ___domain="sharedpref" path="AppCenter.xml"/>
        <exclude ___domain="database" path="com.microsoft.appcenter.persistence"/>
        <exclude ___domain="database" path="com.microsoft.appcenter.persistence-journal"/>
        <exclude ___domain="file" path="error" tools:ignore="FullBackupContent"/>
        <exclude ___domain="file" path="appcenter" tools:ignore="FullBackupContent"/>
    </cloud-backup>
    <device-transfer>
        <exclude ___domain="sharedpref" path="AppCenter.xml"/>
        <exclude ___domain="database" path="com.microsoft.appcenter.persistence"/>
        <exclude ___domain="database" path="com.microsoft.appcenter.persistence-journal"/>
        <exclude ___domain="file" path="error" tools:ignore="FullBackupContent"/>
        <exclude ___domain="file" path="appcenter" tools:ignore="FullBackupContent"/>
    </device-transfer>
</data-extraction-rules>