返回

如何解决 .Net 7 中基于 Android 的 Maui Essentials Android 清单构建错误?

Android

解决 .Net 7 中基于 Android 的 Maui Essentials Android 清单构建错误

在将现有 Xamarin.Android 应用程序升级到 .Net 7 Android 时,你可能会遇到与 Android 清单相关的构建错误,即使你已包含 Maui Essentials 并更新了相关包。本文将深入探讨此问题,提供分步指南来解决它,并提供额外的提示和常见问题解答,帮助你成功克服这个挑战。

问题:Android 清单构建错误

当你尝试使用 Maui Essentials 时,你可能会在 Android 清单文件中收到错误,指出未找到特定的资源文件,例如“xml/microsoft_maui_essentials_fileprovider_file_paths”或“xml/xamarin_essentials_fileprovider_file_paths”。这些错误表明 Android 清单配置不正确,导致构建过程无法正确完成。

解决方案

要解决此问题,请按照以下分步指南操作:

1. 更新 Maui Essentials NuGet 包:
确保你已使用 NuGet 包管理器更新到最新版本的 Maui Essentials 包。这将确保你的项目包含解决该问题的最新依赖项。

2. 检查 Android 清单文件:
在“Project.Android/AndroidManifest.xml”文件中,检查以下权限是否正确添加:

  • <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  • <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  • <uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION" />

3. 添加自定义 xml 文件:
创建名为“FilePaths.xml”的新 xml 文件,并将其放在“Project.Android/Resources/xml”文件夹中。该文件将用于定义文件提供程序的文件路径。

将以下代码添加到“FilePaths.xml”文件中:

<?xml version="1.0" encoding="utf-8"?>
<paths>
  <external-path name="external" path="." />
  <external-path name="external_cache" path="." />
  <external-path name="external_files" path="." />
  <external-path name="external_media" path="." />
</paths>

4. 更新 Android 清单:
在“Project.Android/AndroidManifest.xml”文件中,将以下行添加到<application>元素内部:

<provider
    android:name="androidx.core.content.FileProvider"
    android:authorities="${applicationId}.fileprovider"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/filepaths" />
</provider>

此代码定义了一个文件提供程序,它负责管理文件访问权限和路径映射。

5. 重建解决方案:
在 Visual Studio Code 中,选择“生成”>“重新生成解决方案”。此操作将重建你的项目,并应用所做的更改。

附加提示

  • 确保你已更新到 Visual Studio 2022 的最新版本。
  • 如果仍然遇到问题,请尝试从 Visual Studio Code 中卸载并重新安装 Maui Essentials NuGet 包。
  • 你可以在 Maui Essentials GitHub 存储库上找到有关此问题的更多信息:Issue #9893 · dotnet/maui

常见问题解答

问:为什么我会收到这些 Android 清单构建错误?
答:这些错误通常是由 Android 清单配置不正确引起的,例如缺少必要的权限或文件提供程序定义。

问:FilePaths.xml 文件有什么作用?
答:FilePaths.xml 文件定义了文件提供程序的文件路径,这是访问外部存储设备上文件的必要配置。

问:如何检查 Visual Studio 2022 的最新版本?
答:在 Visual Studio Code 中,转到“帮助”>“检查更新”以查看是否有任何可用的更新。

问:如果重新生成解决方案后仍然遇到问题怎么办?
答:尝试卸载并重新安装 Maui Essentials NuGet 包,或从 Maui Essentials GitHub 存储库获取更多支持信息。

问:我可以在哪里找到有关 Maui Essentials 的更多信息?
答:有关 Maui Essentials 的更多信息,请访问官方网站:https://docs.microsoft.com/en-us/dotnet/maui/fundamentals/essentials/

结论

解决 .Net 7 中基于 Android 的 Maui Essentials Android 清单构建错误是一项直接的任务,需要你更新包、检查 Android 清单、添加自定义 xml 文件并重建解决方案。通过遵循本指南中概述的步骤,你可以轻松解决此问题,并继续开发强大的移动应用程序。