从Xamarin.Android迁移至MAUI时遇JAVA0000重复定义错误
问题根源
迁移后构建报错JAVA0000,提示androidx.collection.ArraySetKt被多次定义,核心原因是项目同时引用了net7.0-android33.0版本的xamarin.androidx.collection.jvm和net6.0-android31.0版本的xamarin.androidx.collection.ktx,两个包包含重复的类文件;另外Xamarin.AndroidX.Lifecycle.Common的警告大概率是版本不兼容导致的。
解决步骤
统一AndroidX包版本
打开项目的.csproj文件,找到所有Xamarin.AndroidX开头的包引用,把xamarin.androidx.collection.jvm和xamarin.androidx.collection.ktx的版本统一成和项目目标框架匹配的版本(比如都用net7.0-android33.0对应的版本),直接删掉旧的net6.0版本包引用。清理缓存与构建文件
执行命令清理NuGet缓存:dotnet nuget locals all --clear手动删除项目目录下的
bin和obj文件夹,然后重新构建项目。处理Lifecycle.Common警告
先卸载Xamarin.AndroidX.Lifecycle.Common包,然后重新安装和其他AndroidX包版本一致的版本;如果是最新版本仍有警告,检查警告详情,手动指定和项目目标Android版本兼容的版本号。强制依赖统一(可选)
如果自动依赖解析还是出问题,在.csproj里给所有AndroidX包添加版本强制设置,比如:<PropertyGroup> <DependencyVersion>Exact</DependencyVersion> </PropertyGroup>或者对单个包用
VersionOverride来锁定版本。
内容的提问来源于stack exchange,提问作者angleUr

