1.问题:
Error:Execution failed for task ':javaapkcomWayHoo:packageAllDebugClassesForMultiDex'.
> java.util.zip.ZipException: duplicate entry: android/support/v4/util/TimeUtils.class
本文提属于v4引用的包冲突。
在我们使用类库的时候,由于Android studio对于包的检测比eclipse检测更加严格。
本人的问题:①在项目中引入了v7包,而v7包会自动引入一个v4包。②在某个项目引用的类库中使用了v13.jar文件,在v13.jar文件中也引入了一个v4。
如下图所示
解决方案:为了解决该问题,我们需要去掉一个v4包。
①、本人使用的方案是:由于引用的类库所包含的v4包必须使用,因此将项目中的v7中v4包进行了屏蔽。在v7包后面加入一句话
exclude module: 'support-v4',不引用v7的v4包,这样解决比较简单。如图所示
dependencies {
compile project(':menuDrawerlib')
compile project(':pullToRefreshlib')
compile project(':swipeBacklib')
compile project(':viewPagerIndicatorlib')
compile project(':weatherlib')
compile 'com.android.support:appcompat-v7:22.2.0' exclude module: 'support-v4'
compile files('src/main/libs/locSDK_4.2.jar')
}
方案的缺点:如果多个jar包均引用了v4,该方法只能将所有的类库中包含v4中的jar的v4包屏蔽,将某一个类库作为其他类库的库文件。比较复杂,也比较乱。
②、别人指导的方案:(本人未测试,不知道如何实现) 从开源包里将v4裁剪出来裁剪出来作为一个单独的类库,其他的库文件和项目均将各自的v4包屏蔽,引用裁剪出来的v4做为一个类库。该方案对于以后的项目中也存在的这种问题,可以将裁剪出来的v4直接导入即可。