Mono.Linker.MarkException:错误处理方法:'System.Void AndroidX.RecyclerView.Widget.RecyclerView/LayoutManage

Posted

技术标签:

【中文标题】Mono.Linker.MarkException:错误处理方法:\'System.Void AndroidX.RecyclerView.Widget.RecyclerView/LayoutManager【英文标题】:Mono.Linker.MarkException: Error processing method: 'System.Void AndroidX.RecyclerView.Widget.RecyclerView/LayoutManagerMono.Linker.MarkException:错误处理方法:'System.Void AndroidX.RecyclerView.Widget.RecyclerView/LayoutManager 【发布时间】:2021-06-14 15:05:11 【问题描述】:

我正在尝试调试我的 Xamarin 项目。框架和所有软件包都是最新的。在 ios 中它可以工作,但在 android 中不行。我该如何解决这个问题:

Mono.Linker.MarkException: Error processing method: 'System.Void AndroidX.RecyclerView.Widget.RecyclerView/LayoutManager::n_OnInitializeAccessibilityNodeInfo_Landroidx_recyclerview_widget_RecyclerView_Recycler_Landroidx_recyclerview_widget_RecyclerView_State_Landroidx_core_view_accessibility_AccessibilityNodeInfoCompat_(System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr,System.IntPtr)' in assembly: 'Xamarin.AndroidX.RecyclerView.dll' ---> Mono.Cecil.ResolutionException: Failed to resolve AndroidX.Core.View.Accessibiity.AccessibilityNodeInfoCompat
   at Mono.Linker.Steps.MarkStep.HandleUnresolvedType(TypeReference reference)
   at Mono.Linker.Steps.MarkStep.MarkType(TypeReference reference)
   at MonoDroid.Tuner.MonoDroidMarkStep.MarkType(TypeReference reference)
   at Mono.Linker.Steps.MarkStep.MarkMethodBody(MethodBody body)
   at Mono.Linker.Steps.MarkStep.ProcessMethod(MethodDefinition method)
   at Mono.Linker.Steps.MarkStep.ProcessQueue()
   --- End of inner exception stack trace ---
   at Mono.Linker.Steps.MarkStep.ProcessQueue()
   at Mono.Linker.Steps.MarkStep.ProcessPrimaryQueue()
   at Mono.Linker.Steps.MarkStep.Process()
   at Mono.Linker.Steps.MarkStep.Process(LinkContext context)
   at MonoDroid.Tuner.MonoDroidMarkStep.Process(LinkContext context)
   at Mono.Linker.Pipeline.ProcessStep(LinkContext context, IStep step)
   at Mono.Linker.Pipeline.Process(LinkContext context)
   at MonoDroid.Tuner.Linker.Process(LinkerOptions options, ILogger logger, LinkContext& context)
   at Xamarin.Android.Tasks.LinkAssemblies.Execute(DirectoryAssemblyResolver res)
   at Xamarin.Android.Tasks.LinkAssemblies.RunTask()
   at Xamarin.Android.Tasks.AndroidTask.Execute()       

【问题讨论】:

这里有一个类似的问题,也许可以帮到你***.com/questions/62132157/… 【参考方案1】:

在将 Visual Studio 更新到 16.9.2 并更新 Android SDK 后,我遇到了同样的问题。

简单的解决方案是在包管理器中更新“Xamarin.AndroidX.RecyclerView”Nuget 包。我更新到最新版本(v1.1.0.8)。

【讨论】:

感谢您的提示。我的解决方案是首先安装“Xamarin.AndroidX.RecyclerView”。 这里也一样。我没有安装那个包。安装它并修复了错误。 确实!谢谢! 对我来说当然不行!!!从来没有在 Xamarin 中工作过... @user1034912 也许您需要根据***.com/a/67092611/1399272 - Xamarin.AndroidX.CoreXamarin.AndroidX.CustomViewXamarin.AndroidX.PreferenceXamarin.AndroidX.RecyclerView 明确安装的其他软件包之一?【参考方案2】:

同样的问题,但我没有安装“Xamarin.AndroidX.RecyclerView”。

解决方案:安装在 android 项目 'Xamarin.AndroidX.RecyclerView' 中,一切正常

【讨论】:

这对我有用,我还更新了解决方案中的所有 nugget 包。 它也对我有用【参考方案3】:

Zee 的回答是正确的。 这是可以解决其他类似问题的解释。 https://github.com/xamarin/AndroidX/issues/283

jpobst 于 3 月 1 日发表评论 在解决传递依赖时, 不幸的是,NuGet 选择了满足 标准。这意味着对传递依赖的修复通常 不要被捡起来。

在这种情况下,问题是命名空间拼写错误 (AndroidX.Core.View.Accessibiity) 已更正,但是有一个(或多个) 使用该命名空间中的类型的包中的 更新了。

您需要确保您使用的是最新版本 包,这可能需要添加显式包引用 他们:

Xamarin.AndroidX.Core Xamarin.AndroidX.CustomView Xamarin.AndroidX.Preference Xamarin.AndroidX.RecyclerView

【讨论】:

【参考方案4】:

我遇到了这个错误。就我而言,它最终通过删除 Xamarin.AndroidX.Legacy.Support.V4 NuGet 来解决,无论如何都不需要它。我认为自动 AndroidX 迁移将其放入。

【讨论】:

【参考方案5】:

对我来说,问题在于 VS 16.9.3 和发布版本,解决方案是删除对 Xamarin.AndroidX.AppCompat.AppCompatResources 的依赖。

【讨论】:

【参考方案6】:

在我更新了所有 nuget 软件包后,今天我也遇到了同样的问题,当我清理并重建解决方案时问题得到了解决。

【讨论】:

具有讽刺意味的是,这对我也有效。【参考方案7】:

对我来说,当我升级到 Xamarin.Firebase.Messaging v 121.1.0 时问题就开始了 - 恢复到 v121.0.1 解决了这个问题 - 至少是暂时的

【讨论】:

我同意这只是 Xamarin 的一个无休止的无休止的问题......和往常一样,这里的解决方案都不起作用【参考方案8】:

我的解决方案是通过 Nuget 安装:Xamarin.Google.Android.Material

【讨论】:

以上是关于Mono.Linker.MarkException:错误处理方法:'System.Void AndroidX.RecyclerView.Widget.RecyclerView/LayoutManage的主要内容,如果未能解决你的问题,请参考以下文章