.NET 8 MAUI集成最新Firebase推送包遇JAVA0000重复类编译错误
解决.NET 8 MAUI集成Firebase推送时的androidx.collection重复定义编译错误
核心原因
你遇到的JAVA0000编译错误是因为Xamarin.Firebase.Dynamic.Links和Xamarin.Firebase.Messaging间接引入了不同版本的xamarin.androidx.collection.jvm和xamarin.androidx.collection.ktx,导致ArrayMapKt类重复定义。
解决方案
1. 强制统一androidx.collection依赖版本
在MAUI项目文件(.csproj)中添加以下PackageReference,强制两个冲突包使用相同的最新兼容版本:
<ItemGroup> <!-- 统一版本为1.3.0.2,与jvm包版本对齐 --> <PackageReference Include="Xamarin.AndroidX.Collection.Jvm" Version="1.3.0.2" /> <PackageReference Include="Xamarin.AndroidX.Collection.Ktx" Version="1.3.0.2" /> </ItemGroup>
保存文件后重新加载项目。
2. 清理NuGet缓存与重建项目
执行命令清理本地NuGet缓存,避免旧版本依赖干扰:
dotnet nuget locals all --clear
手动删除项目目录下的bin和obj文件夹,最后重新生成整个解决方案。
3. 排查间接依赖来源
若以上方法无效,用命令查看所有间接依赖,确认哪个包引入了低版本的xamarin.androidx.collection.ktx:
dotnet list package --include-transitive
根据输出找到对应依赖包后,通过PackageReference强制覆盖其版本即可。
4. 调整Firebase包的依赖处理(可选)
如果统一版本仍有问题,可尝试在Firebase包引用中排除冲突的间接依赖:
<PackageReference Include="Xamarin.Firebase.Messaging" Version="123.3.1.2"> <ExcludeAssets>runtime</ExcludeAssets> </PackageReference> <PackageReference Include="Xamarin.Firebase.Dynamic.Links" Version="121.2.0.2"> <ExcludeAssets>runtime</ExcludeAssets> </PackageReference>
注意:此操作需谨慎,确保不会移除必要的运行时依赖。
内容的提问来源于stack exchange,提问作者Shobana N
相关产品推荐
相关产品推荐

