MAUI 和 Xamarin 入门

重要

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

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

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

让我们开始在应用中设置 App Center .NET SDK,以使用 App Center Analytics 和 App Center 崩溃。 若要将 App Center 分发添加到应用,请查看 App Center 分发的文档

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 平台。 请使用 Xamarin for iOS 和 Android 和 UWP for Windows。

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 Analytics ”和“ App Center 崩溃”。
  • 单击“ 添加包”。

适用于 Windows 的 Visual Studio

  • 打开 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 文件,并在构造函数 (或 Xamarin.Forms) 方法中添加 OnStart() 以下行。

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));

注意

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

4.2.3 Xamarin.iOS 和 Xamarin.Mac

注意

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

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

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

注意

如果使用崩溃,则必须在 UI/main线程中调用此方法,并避免在方法返回之前Start启动后台任务。 原因是初始化崩溃时从另一个线程捕获的任何 null 引用异常都可能会触发本机崩溃并忽略 catch 子句。 AppCenter.Start方法返回后,可以安全地再次尝试/捕获 null 引用异常。 有关此计时问题的原因的详细信息,请参阅 信号和第三方崩溃报告者 一文。

警告

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

重要

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

注意

对于 iOS 应用程序,应用中不能有多个活动故障报告 SDK。 禁用其他 SDK 的崩溃报告功能,以确保 App Center 可以捕获崩溃。

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

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

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

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

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

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

例如 - 如果要加入 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 分发文档。

注意

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

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>