Xamarin.Android、AndroidManifest.xml、AndroidManifestMerger、xmlns:tools 架构,始终手动替换

2024-02-04

当编译我的 Xamarin Forms Android 应用程序时,Visual Studio 会显示 AndroidManifest.xml 冲突的错误列表,例如:

/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Common.targets(3,3): Error AMM0000:  is also present at AndroidManifest.xml:14:9-41 value=(@string/app_name). (AMM0000)

/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Common.targets(3,3): Error AMM0000:  Suggestion: add 'tools:replace="android:label"' to <application> element at AndroidManifest.xml:19:3-79:17 to override. (AMM0000)

因此,我从调试文件夹中打开 AndroidManifest.xml,替换为工具:替换到应用程序标记中,将工具架构添加到清单标记中,保存它,重新编译我的应用程序,它运行时没有错误。

但每当我编译 Xamarin Forms Android 应用程序时,都必须手动遵循前面的步骤.

我还补充一下<AndroidManifestMerger>manifestmerger.jar</AndroidManifestMerger>,进入我的 Android .csproj

这个问题在DEBUG和RELEASE模式下都会出现!!

环境

  • Visual Studio 社区 2019 Mac 版 8.6.4
  • Xamarin 表单 = 4.7.0.968
  • Xamarin.Android = 版本:10.3.1.4

这是一Xamarin 表单问题 https://github.com/xamarin/Xamarin.Forms/issues/112334.6.0.967 及更高版本。对我来说,这是由使用 Honeywell.BarcodeReader NuGet 包引发的。

一些 AndroidX 包会用 manifestmerger.jar 覆盖默认的 Xamarin(很快就会成为旧版本)清单合并。

解决方法是降级到 Xamarin Forms 4.6.0.847,或者修改 AndroidManifest.xml 以具有如下应用程序元素:

<application android:label="@string/app_name" tools:replace="android:label" ...

或者如果有更多冲突:

<application android:label="@string/app_name" tools:node="replace"...

您还需要将以下命名空间作为属性添加到清单中:

xmlns:tools="http://schemas.android.com/tools"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Xamarin.Android、AndroidManifest.xml、AndroidManifestMerger、xmlns:tools 架构,始终手动替换 的相关文章

随机推荐