Android,AndroidManifest.xml,AndroidManifestMerge,xmlns:tools模式,总是手动替换

Android,AndroidManifest.xml,AndroidManifestMerge,xmlns:tools模式,总是手动替换,android,xamarin,xamarin.forms,xamarin.android,android-manifest,Android,Xamarin,Xamarin.forms,Xamarin.android,Android Manifest,编译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=

编译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)
/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Common.targets(3,3):错误AMM0000:也出现在AndroidManifest.xml:14:9-41 value=(@string/app_name)。(万安培)
/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Common.targets(3,3):错误AMM0000:建议:在AndroidManifest.xml:19:3-79:17处的元素中添加'tools:replace=“Android:label”'以覆盖。(万安培)
因此,我从调试文件夹打开AndroidManifest.xml,替换为工具:替换为应用程序标记,将工具模式添加到清单标记中,保存它,重新编译我的应用程序,然后它就可以正常运行了

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

我还将
manifestmerge.jar
添加到我的Android.csproj中

此问题显示为调试和发布模式

环境

  • 适用于Mac 8.6.4版的Visual Studio社区2019
  • Xamarin形式=4.7.0.968
  • Android=Versione:10.3.1.4
    • 这是一个4.6.0.967及以上版本。对我来说,这是使用Honeywell.BarcodeReader NuGet软件包引起的

      一些AndroidX包正在用manifestMerge.jar覆盖默认的Xamarin(即将成为遗留)清单合并

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

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

      尝试清理和重建您的解决方案

      构建>清洁解决方案

      构建>重建解决方案


      它对我很有效。

      手动执行前面的步骤是什么意思?调试代码时,需要在调试之前完成所有工作?好的,我将一步一步地解释:1)启动调试,并显示编译器的错误:AndroidManifest冲突(上面的错误)。2) 接下来,我从Android项目obj/debug/AndroidManifest.xml打开AndroidManifest.xml,并将其添加到清单标记tools:replace=“Android:label”和应用程序标记xmlns:tools=”“3)从obj/debug保存AndroidManifest并重新启动debug,然后应用程序无错误启动。现在停止调试并编辑代码,重新启动调试Android项目,从第一步开始重复步骤!还有,我知道了。您的意思是每次调试代码时都需要将
      工具:replace
      添加到AndroidManifest.xml中。是的,每次调试我都需要手动将提到的标记添加到AndroidManifest.xml文件中!没有添加标签的新项目工作!
      <application android:label="@string/app_name" tools:node="replace"...
      
      xmlns:tools="http://schemas.android.com/tools"