Mono.Linker.MarkException:错误处理方法:'System.Void Plugin.LocalNotification.Platform.Droid.NotificationServiceImpl

Div*_*_08 4 c# visual-studio xamarin xamarin.forms

将 Xamarin.Forms 版本更新到最新稳定版本 4.6.0.800 后,在发布模式下进行构建时出现错误:

/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Android/Xamarin.Android.Common.targets(5,5): Error XALNK7000: Mono.Linker.MarkException: Error processing method: 'System.Void Plugin.LocalNotification.Platform.Droid.NotificationServiceImpl::ShowLater(Plugin.LocalNotification.NotificationRequest)' in assembly: 'Plugin.LocalNotification.dll' ---> Mono.Cecil.ResolutionException: Failed to resolve AndroidX.Work.OneTimeWorkRequest/Builder AndroidX.Work.OneTimeWorkRequest/Builder::SetInitialDelay(System.Int64,Java.Util.Concurrent.TimeUnit)
at Mono.Linker.Steps.MarkStep.HandleUnresolvedMethod (Mono.Cecil.MethodReference reference) [0x00013] in <0275dd5bdfa6470181a4d79d0790489d>:0
at Mono.Linker.Steps.MarkStep.MarkMethod (Mono.Cecil.MethodReference reference) [0x0004a] in <0275dd5bdfa6470181a4d79d0790489d>:0
at Mono.Linker.Steps.MarkStep.MarkInstruction (Mono.Cecil.Cil.Instruction instruction) [0x00040] in <0275dd5bdfa6470181a4d79d0790489d>:0
at Mono.Linker.Steps.MarkStep.MarkMethodBody (Mono.Cecil.Cil.MethodBody body) [0x000c2] in <0275dd5bdfa6470181a4d79d0790489d>:0
at Mono.Linker.Steps.MarkStep.ProcessMethod (Mono.Cecil.MethodDefinition method) [0x00186] in <0275dd5bdfa6470181a4d79d0790489d>:0
at Mono.Linker.Steps.MarkStep.ProcessQueue () [0x0001b] in <0275dd5bdfa6470181a4d79d0790489d>:0
--- End of inner exception stack trace ---
at Mono.Linker.Steps.MarkStep.ProcessQueue () [0x00047] in <0275dd5bdfa6470181a4d79d0790489d>:0
at Mono.Linker.Steps.MarkStep.ProcessPrimaryQueue () [0x0000a] in <0275dd5bdfa6470181a4d79d0790489d>:0
at Mono.Linker.Steps.MarkStep.Process () [0x00102] in <0275dd5bdfa6470181a4d79d0790489d>:0
at Mono.Linker.Steps.MarkStep.Process (Mono.Linker.LinkContext context) [0x0000d] in <0275dd5bdfa6470181a4d79d0790489d>:0
at MonoDroid.Tuner.MonoDroidMarkStep.Process (Mono.Linker.LinkContext context) [0x0000b] in <0275dd5bdfa6470181a4d79d0790489d>:0
at Mono.Linker.Pipeline.ProcessStep (Mono.Linker.LinkContext context, Mono.Linker.Steps.IStep step) [0x0000d] in <0275dd5bdfa6470181a4d79d0790489d>:0
at Mono.Linker.Pipeline.Process (Mono.Linker.LinkContext context) [0x0000f] in <0275dd5bdfa6470181a4d79d0790489d>:0
at MonoDroid.Tuner.Linker.Run (Mono.Linker.Pipeline pipeline, Mono.Linker.LinkContext context) [0x00000] in <0275dd5bdfa6470181a4d79d0790489d>:0
at MonoDroid.Tuner.Linker.Process (MonoDroid.Tuner.LinkerOptions options, Mono.Linker.ILogger logger, Mono.Linker.LinkContext& context) [0x00071] in <0275dd5bdfa6470181a4d79d0790489d>:0
at Xamarin.Android.Tasks.LinkAssemblies.Execute (Java.Interop.Tools.Cecil.DirectoryAssemblyResolver res) [0x001dd] in <0275dd5bdfa6470181a4d79d0790489d>:0
at Xamarin.Android.Tasks.LinkAssemblies.RunTask () [0x0001b] in <0275dd5bdfa6470181a4d79d0790489d>:0
at Xamarin.Android.Tasks.AndroidTask.Execute () [0x00000] in <0275dd5bdfa6470181a4d79d0790489d>:0 (XALNK7000)
Run Code Online (Sandbox Code Playgroud)

有谁知道解决办法吗?

Div*_*_08 6

我回答了我自己的问题,几天后我终于找到了这个问题的解决方法。这可能对正在寻找解决方案的人有所帮助。

解决方案 1:按照以下步骤操作

  • 将网络标准更新为2.1
  • 将 Plugin.LocalNotification 更新到最新版本 5.0.4
  • 删除不必要的 Android X 块
  • 删除 Xamarin.Android.Support.v7.MediaRouter
  • 在发布模式下启用 Multidex
  • 删除 bin/obj 并重建应用程序 [现在可以工作了]

解决方案 2:更改在所有项目中引用包的方式

  • 从 Android 和 iOS 项目中删除所有包
  • 仅将包添加到 PCL/Net 标准项目
  • 在Android & iOS项目中添加Core项目的引用
  • 必须使用最新版本的 Plugin.LocalNotification 5.0.4