添加Xamarin.AndroidX.Work.Runtime后.NET MAUI项目编译错误的特定修复方案是什么?
.NET MAUI添加Xamarin.AndroidX.Work.Runtime后编译冲突解决
添加Xamarin.AndroidX.Work.Runtime NuGet包启用Android WorkManager功能后,项目立即无法编译,输出窗口抛出类型重复定义错误:
Caused by: com.android.tools.r8.utils.b: Type androidx.collection.ArraySetKt is defined multiple times:
C:\Users\spesc.nuget\packages\xamarin.androidx.collection.jvm\1.4.5.2\buildTransitive\net8.0-android34.0....
jar\androidx.collection.collection-jvm.jar:androidx/collection/ArraySetKt.class, C:\Users\spesc.nuget
packages\xamarin.androidx.collection.ktx\1.2.0.9\buildTransitive\net6.0-android31.0....\jar\androidx.collection.collection-ktx.jar:androidx/collection/ArraySetKt.class
该问题可在全新.NET MAUI模板项目中复现,且尝试修复时会触发其他Android类型冲突错误。
解决方法
- 统一依赖版本:在项目的
.csproj文件中显式指定冲突依赖的相同兼容版本,强制NuGet使用一致的包。示例:<ItemGroup> <PackageReference Include="Xamarin.AndroidX.Collection.Jvm" Version="1.4.5.2" /> <PackageReference Include="Xamarin.AndroidX.Collection.Ktx" Version="1.4.5.2" /> </ItemGroup> - 清理并还原NuGet缓存:打开终端执行以下命令,清除本地NuGet缓存后重新还原依赖:
dotnet nuget locals all --clear dotnet restore - 排除重复资产(备选):若上述方法无效,可通过
ExcludeAssets属性排除冲突的间接依赖,但需注意可能影响其他功能:<PackageReference Include="Xamarin.AndroidX.Collection.Ktx" Version="1.4.5.2"> <ExcludeAssets>all</ExcludeAssets> </PackageReference>
内容的提问来源于stack exchange,提问作者Steve Peschka
相关产品推荐
相关产品推荐

