MAUI Android项目在Rider中构建失败,求解决指引
以下是针对这个D8/R8编译失败问题的具体解决步骤:
检查并调整NuGet包版本
先查看项目中Xamarin.Google.Guava.ListenableFuture的版本,尝试升级到最新稳定版,或者降级到1.0.0.10这类与net6.0-android兼容性更好的版本。同时确认项目中其他Google相关NuGet包(比如Guava核心包)的版本,保证依赖版本统一,避免类定义冲突。排除重复的类文件
如果项目同时引入了包含ListenableFuture.class的多个库(比如Guava主包和单独的ListenableFuture包),可以直接修改项目的.csproj文件来排除冲突的jar:<ItemGroup> <AndroidExternalJar Remove="$(NuGetPackageRoot)xamarin.google.guava.listenablefuture\1.0.0.11\jar\guava-listenablefuture.jar" /> </ItemGroup>或者如果Guava主包已经包含该类,直接移除单独的
Xamarin.Google.Guava.ListenableFutureNuGet包。临时调整R8编译参数
若暂时无法彻底解决包冲突,可以通过添加R8参数绕过重复类错误(注意:这是临时方案,可能隐藏潜在问题):
在.csproj的<PropertyGroup>节点中添加:<AndroidR8ExtraArgs>--allow-duplicate-classes</AndroidR8ExtraArgs>清理重建项目
删除项目的bin、obj目录,同时删除~/.nuget/packages下对应的xamarin.google.guava.listenablefuture文件夹。然后在Rider中执行Clean Solution,再重新执行Rebuild Solution,确保没有旧编译文件残留。调整Android SDK版本
尝试升级Microsoft.Android.Sdk.Darwin到最新稳定版,或者降级到与net6.0-android更适配的版本(比如32.0.470),避免SDK工具与NuGet包的兼容性问题。
内容的提问来源于stack exchange,提问作者kush

