前言
在安卓项目开发过程中,我们免不了会接触三方SDK的引用开发,比较常见的SDK有基于地图的高德地图SDK,基于社会化分享的友盟统计SDK,以及基于Bug日志获取的腾讯Bugly SDK等。由于不同的SDK开发方不同,所以经常性的会引入Jar包冲突无法打包的问题,如果是三方SDK引用了本地已经使用的Jar包,我们将冲突的Jar删除即可,如果是两个三方SDK引用了相同Jar包,我们则需要对SDK进行一些特殊处理。
打包异常
如图所示,在工程进行APK打包的时候报了一个ZipException,出现这个异常的原因在于两个Jar包中使用了想同包名相同类名的文件,导致程序不知道该使用哪一个类文件。
解决方案
当两个三方SDK使用相同包名相同类名的文件时,我们需要手动解决这个冲突,具体实现方法为将Jar包重命名为zip文件并解压。
找到对应冲突的文件,删除冲突的文件,保证两个Jar包中相同包名与相同类名的文件只能存在一个,删除冲突文件后,对文件进行重新打包。
使用cmd进入文件路径:
jar cvf after_delete.jar .
命令执行完成,在执行目录会发现手动解决冲突的Jar包,使用新Jar包重新打包即可解决打包冲突问题。