如何解决Android项目中org.simpleframework.xml类重复冲突问题?
解决SimpleXML类重复冲突的Gradle配置方法
问题根因
你自行开发的poslib库已经把SimpleXML相关类打包进了aar,同时主项目通过retrofit2:converter-simplexml又引入了官方的SimpleXML依赖,导致两个模块里出现完全相同的类,触发Duplicate Class错误。
具体解决步骤
方案1:排除Retrofit转换器自带的SimpleXML依赖
直接修改主项目的Gradle依赖配置,在引入converter-simplexml时,把它依赖的官方SimpleXML模块排除掉,这样就只会用poslib里打包的版本:
implementation 'com.squareup.okhttp3:logging-interceptor:3.4.1' implementation 'com.squareup.retrofit2:converter-gson:2.1.0' // 给converter-simplexml加上exclude配置 implementation ('com.squareup.retrofit2:converter-simplexml:2.7.1') { exclude group: 'org.simpleframework', module: 'simple-xml' } // 你的自定义库依赖,比如本地模块或者远程aar implementation project(':poslib')
方案2:排除自定义库中的SimpleXML依赖(如果库未打包依赖)
如果你的poslib没有把SimpleXML打包进aar,只是声明了依赖,可以在引入poslib时排除它的SimpleXML依赖,改用主项目的版本:
// 引入自定义库时排除内部的SimpleXML依赖 implementation ('你的组ID:poslib:版本号') { exclude group: 'org.simpleframework', module: 'simple-xml' }
验证是否生效
执行下面的Gradle命令查看依赖树,确认org.simpleframework:simple-xml只有一个来源:
./gradlew app:dependencies
搜索这个依赖,确保不会同时出现poslib和官方包的条目。
额外注意
- 操作完成后记得清理缓存并重新构建:
./gradlew clean build - 后续建议规范库的依赖声明:如果希望主项目控制依赖版本,库中用
api声明SimpleXML;如果要把依赖打包进库,用implementation,避免主项目重复引入。
内容的提问来源于stack exchange,提问作者winfred adrah
相关产品推荐
相关产品推荐

