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 门户中创建了应用,则可以跳过此步骤。
- 前往 appcenter.ms。
- 注册或登录,点击门户右上角显示 “新增” 的蓝色按钮,然后从下拉菜单中选择“ 添加新应用 ”。
- 输入应用的名称和可选说明。
- 如上所述,根据项目选择合适的 OS 和平台。
- 点击右下角显示 “添加新应用”的按钮。
创建应用后,可以在 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.Analytics 和 Microsoft.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 Mac或 Visual Studio for Windows 部分中所述的相应步骤进行操作。
4. 启动 SDK
若要使用 App Center,必须选择加入要使用的模块 () 。 默认情况下,不会启动任何模块,必须在启动 SDK 时显式调用每个模块。
4.1 添加 using 语句
在以下文件中添加相应的命名空间:
- MAUI 和 Xamarin.Forms -
App.xaml.cs
- Xamarin.iOS 和 Xamarin.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 服务,应:
- 使用应用机密配置或启动它。
- 如果代码可以多次调用,检查是否已配置 App Center。
- 在没有应用密码的情况下启动所需的服务 () 。
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 Analytics 和 App Center 崩溃 的文档,了解如何自定义和使用这两种服务的更高级功能。
若要了解如何开始使用应用内更新,请阅读 App Center 分发文档。
注意
使用 Xamarin Forms 中的可移植 API,你将看到来自所有模块的 API,但并非所有这些 API 在 UWP 和 Windows 桌面 平台上都受支持,在 UWP 和 Windows 桌面 应用程序上运行时不执行任何操作。 特别是 UWP 和 Windows 桌面不支持以下模块: 分发。 具有返回类型的任何方法都会为对象) 返回 null
(, 0
为数字) 返回 (,或者 false
为 UWP 和 Windows Desktop 应用程序上的布尔值) 返回 (。
5. 备份规则仅 (Android)
注意
面向 Android 6.0 (API 级别 23) 或更高版本的应用会自动启用自动备份。
注意
如果已有包含备份规则的自定义文件,请切换到第三步。
如果使用自动备份来避免获取有关设备的错误信息,请遵循后续步骤:
5.1. 对于 Android 11 (API 级别 30) 或更低。
- 在 Resources/xml 文件夹中创建 appcenter_backup_rule.xml 文件。
- 打开项目的 AndroidManifest.xml 文件。 将
android:fullBackupContent
属性添加到<application>
元素。 它应指向 appcenter_backup_rule.xml 资源文件。
android:fullBackupContent="@xml/appcenter_backup_rule"
- 将以下备份规则添加到 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) 或更高版本。
- 在 Resources/xml 文件夹中创建 appcenter_backup_rule.xml 文件。
- 打开项目的 AndroidManifest.xml 文件。 将
android:dataExtractionRules
属性添加到<application>
元素。 它应指向 appcenter_backup_rule.xml 资源文件。
android:dataExtractionRules="@xml/appcenter_backup_rule"
- 将以下备份规则添加到 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>