情况是这样的
我的项目中使用到了百度广告的SDK:BaiduMob1.jar
项目中使用到一个第三方的SDK,这个SDK中的一个aar里面也包含了BaiduMob2.jar
BaiduMob1.jar
和BaiduMob2.jar
是不同版本的广告jar包,但是里面的包名是一样的com.baidu.mobs,这个时候会导致一个冲突:
Error: Program type already present: com.baidu.mobads.xxxxxx
解决这个冲突的逻辑只有一个,要么删除BaiduMob1.jar
要么删除BaiduMob2.jar
。
当然删除BaiduMob1.jar
是很容易的,因为BaiduMob1.jar
在你自己的项目里面想删就删。
但是实际情况是BaiduMob2.jar
被别人打包在aar中,它可能是一个非常old版本,这样就只能被这个第三方所限制。所以我们理想的方法还是删除第三方aar中的BaiduMob2.jar
移除aar中的jar中的com.baidu
com.baidu 这个包就是我们要删除的对象,给你个文件结构图自己体会:
sdk_player.aar --> class.jar --> com.b