Xamarin中出现java.lang.IllegalArgumentException错误,求解决方案
嘿,这个问题我之前帮不少开发者搞定过!你遇到的Error:java.lang.IllegalArgumentException: already added : Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat;本质上是重复引用了Android Support v4库,或者项目里不同NuGet包/组件依赖了版本不一致的v4库,导致打包时出现重复类冲突。给你几个实用的解决方向:
统一NuGet包版本
打开项目的NuGet包管理器,搜索所有和Xamarin.Android.Support.v4相关的包,确保它们的版本完全一致。如果存在版本差异,要么统一升级到兼容的最新版本,要么降级到同一个稳定版本。要是遇到第三方组件间接依赖的情况,可以在NuGet控制台执行命令强制指定版本:Install-Package Xamarin.Android.Support.v4 -Version [你要统一的版本号]清理重复引用
右键项目选择「管理NuGet程序包」,在「已安装」标签下检查是否有重复安装的v4相关包(比如同时装了Xamarin.Android.Support.v4和包含它的Xamarin.Android.Support.Design),把多余的卸载掉。另外还要检查项目References里有没有手动添加的Android Support库dll,这类手动引用容易和NuGet包冲突,建议删掉改用NuGet管理。清理缓存并重建项目
先点击菜单栏的「生成」->「清理解决方案」,然后手动删除项目目录下的bin和obj文件夹(这两个文件夹的缓存经常会引发奇怪的冲突)。之后重启Visual Studio,再重新生成解决方案,很多时候缓存问题解决后冲突就消失了。启用ProGuard优化打包
打开Android项目属性,找到「Android选项」->「打包」,勾选「启用ProGuard」。ProGuard会自动移除重复类和未使用的代码,能有效解决这类重复类问题。不过开启后可能需要配置ProGuard规则,避免误删项目必需的类。
内容的提问来源于stack exchange,提问作者Shi Jie Tio

