如何解决尝试构建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
解决方法
首先请确保仅定位到Arm64,因为这是Google Play现在支持的默认体系结构。
第二,确保切换到dx编译器而不是d8。我知道Google建议切换到d8 / r8编译器实施,但是从经验来看,它仍然不稳定,并且剥夺了我参与过的以前项目依赖的Apis分配。 (例如Square SDK)。
第三,您的android客户端似乎正在引用与Android运行时不兼容的源代码。尝试使用接口隔离的 SOLID 原理隐藏实现(在该方法中,您可以通过接口和依赖项注入隐藏类的实现,然后让另一个库为您管理实现。如果可以避免客户端通过直接引用直接导致您的问题的实现(通过抽象该实现),则链接器应为您工作。
第四,始终确保链接源代码,以最小化apk的大小。此外,它还可以加快开发速度,并确保启用Shared MonoRuntime。 Android 6及更高版本支持该功能。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。