关闭

Android开发之包冲突解决

标签: jarAndroid v4包冲突Android studio 包冲突
2773人阅读 评论(0) 收藏 举报
分类:

通过Maven中央库添加第三方jar包的时候,出现了重复加载jar包的问题,解决办法很简单去掉一个不让它去加载就OK了

一、错误

<span style="font-size:14px;">Error:Execution failed for task ':app:dexDebug'.
> com.android.ide.common.internal.LoggedErrorException: Failed to run command:
	F:\zsl\sdk\build-tools\21.1.2\dx.bat --dex --output F:\zsl\Android\pro\RecipesDaquan\app\build\intermediates\dex\debug --input-list=F:\zsl\Android\pro\RecipesDaquan\app\build\intermediates\tmp\dex\debug\inputList.txt
Error Code:
	2
Output:
	UNEXPECTED TOP-LEVEL EXCEPTION:
	com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompatIcs;
		at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)
		at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)
		at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)
		at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
		at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)
		at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)
		at com.android.dx.command.dexer.Main.runMonoDex(Main.java:303)
		at com.android.dx.command.dexer.Main.run(Main.java:246)
		at com.android.dx.command.dexer.Main.main(Main.java:215)
		at com.android.dx.command.Main.main(Main.java:106)</span>

从上述错误中我们可以看到support_v4的包重复加载编译了,我们看一下gradle-app文件

\

<span style="font-size:14px;"><"/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHByZSBjbGFzcz0="brush:java;">
dependencies { 
compile fileTree(dir: 'libs', include: ['*.jar']) 
compile 'com.android.support:appcompat-v7:21.0.0' 
compile 'in.srain.cube:cube-sdk:1.0.42.1' 
compile files('libs/android-async-http-1.4.6.jar')
}
其中引入了v7的包后会自动去加载编译一个v4:21.0.0包,而在in.srain.cube:cube-sdk:1.0.42.1库中也有一个v4的包,
所以我们需要去掉一个</span>

看一下,libraries是否是我们所讲的那样,重复加载v4包

\

二、解决办法

<span style="font-size:14px;">dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.0'
    compile ('in.srain.cube:cube-sdk:1.0.42.1'){
        exclude module: 'support-v4'
    }
    compile files('libs/android-async-http-1.4.6.jar')
}</span>

去掉in.srain.cube:cube-sdk:1.0.42.1中的包不加载即可。

注意:如果SDK 或者module中加载v4包的方式是使用加载jar包的方式 ,那么就在app的build.gradle使用下面的方式加载v4包

<span style="font-size:14px;">compile 'com.android.support:support-v4:24.2.0'</span>
然后删除libs中的v4jar包就可以解决问题了
0
1

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:208624次
    • 积分:3067
    • 等级:
    • 排名:第11401名
    • 原创:75篇
    • 转载:111篇
    • 译文:0篇
    • 评论:32条
    最新评论