微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

尝试构建Android项目时出现链接器错误

如何解决尝试构建Android项目时出现链接器错误

每次尝试构建Android项目时,都会出现此链接错误,并且链接器仅设置为SDK。

Error       Mono.Linker.MarkException: Error processing method: 'System.ComponentModel.ICustomTypeDescriptor System.Data.Entity.ModelConfiguration.Utilities.AttributeProvider::GetTypeDescriptor(System.Type)' in assembly: 'EntityFramework.dll' ---> Mono.Cecil.ResolutionException: Failed to resolve System.Void System.ComponentModel.DataAnnotations.AssociatedMetadataTypeTypeDescriptionProvider::.ctor(System.Type)
   at Mono.Linker.Steps.MarkStep.HandleUnresolvedMethod(MethodReference reference)
   at Mono.Linker.Steps.MarkStep.MarkMethod(MethodReference reference)
   at Mono.Linker.Steps.MarkStep.MarkInstruction(Instruction instruction)
   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()   TraceIt.Android         

构建设置:

settings

settings2

settings3

settings4

settings5

settings6

settings7

settings8

解决方法

首先请确保仅定位到Arm64,因为这是Google Play现在支持的默认体系结构。

第二,确保切换到dx编译器而不是d8。我知道Google建议切换到d8 / r8编译器实施,但是从经验来看,它仍然不稳定,并且剥夺了我参与过的以前项目依赖的Apis分配。 (例如Square SDK)。

第三,您的android客户端似乎正在引用与Android运行时不兼容的源代码。尝试使用接口隔离的 SOLID 原理隐藏实现(在该方法中,您可以通过接口和依赖项注入隐藏类的实现,然后让另一个库为您管理实现。如果可以避免客户端通过直接引用直接导致您的问题的实现(通过抽象该实现),则链接器应为您工作。

第四,始终确保链接源代码,以最小化apk的大小。此外,它还可以加快开发速度,并确保启用Shared MonoRuntime。 Android 6及更高版本支持该功能。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。