关于导很多jar包和类库之后出现的问题

时间:2021-02-15 13:15:31

最近公司项目需求导了很多的jar包和类库。遇到了许多问题,在这个过程中各种错误各种报,还都是编译能通过运行通不过的错误。给人整的那叫一个懵。在这里将自己遇到的问题以及解决方案分享出来以供大家共同学习

首先我是用AS开发的,我要导的第一个moudle就是环信的easeUI。依赖上之后编译没有问题,运行时就会报错:

Error:Execution failed for task':app:transformClassesWithDexForDebug'.

>com.android.build.api.transform.TransformException:com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException: Process 'command'F:\Program Files (x86)\Java\jdk1.8.0_31\bin\java.exe'' finishedwith non-zeroexit value 1

然后在网上找到http://blog.sina.com.cn/s/blog_6f3828770102w30b.html之后那叫一个高兴啊,我就删了自己app里边的V4包。然后又clean,rebuilder。心想总该没事了,但是问题又出现了:

Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'.
> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: android/support/annotation/ColorRes.class
我就接着百度,各种说法都有,更让人头疼的是好多回答都是英文的,我虽然是老外的脑残粉,可我的英语也够脑残。无奈之下求助环信的工作人员,给出了解决方案:
解决方案,在build.gradle中添加如下配置:
configurations {
      all*.exclude group: 'com.android.support', module: 'support-v4'
}
当时并不明白为什么这样,就百度了一下,感觉这个说的还靠谱点,大家可以借鉴:http://blog.csdn.net/raptor/article/details/38538037。
但是再次编译运行还是有问题:
Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'.
> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: com/hyphenate/EMCallBack.class
这次就简单了,一看就知道还是自己app里边的jar包和easeUI里边的重复了。我就去看easeUI里边和自己app里边的jar包,发现hyphenatechat这个jar包重复了,我就把app里边的删除再次编译运行好了。(最后一次出现的问题完全是自己的粗心导致的,当时在看文档的时候按照文档走的,就把那个jar包拷贝进app的lib下边,导入ui库之后我发现了ui库里边也有这个jar包,当时我想删除app中的来着,但是发现ui库里边的并没有add as library,然后我就想当然的以为不管是add进app还是ui库,反正就add了一次应该不会有问题的。然而事实并非如此)
因为在easeUI的build.gradle文件中是这样一句话,
compile fileTree(dir: 'libs', include: ['*.jar'])
这就是当在libs下边有多个jar包时可以用这样一句话包含所有,因为app中有了上述的hyphenatechat包,所以在ui库里
不是add as library的状态,但是也是引用进项目中的,所以就重复了。


解决了这样的问题之后,在写微信支付和友盟第三方登录的时候也遇到了类似的jar包重复的问题,有了上边的经验,这一次的很快就得到了解决。想起自己第一次写友盟分享的时候也有这样的问题,哪个时候的自己采用了最笨的方法,将需要的文件拷贝进自己的项目中,这样做虽然解决了问题,但是后期的更新就不好做了,所以还是没有从根本上解决问题。这里的问题和解决方法就不赘述了,有问题的可以私信我。