解决Android Studio加载第三方jar包,出现包重复加载的问题:
2016-02-18 11:17
447 查看
通过Maven中央库添加第三方jar包的时候,出现了重复加载jar包的问题,解决办法很简单去掉一个不让它去加载就OK了
[html] view
plain copy
print?
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:<strong> <span style="color:#3333ff;">Multiple dex files define Landroid/</span><span style="color:#ff0000;">support/v4</span><span style="color:#3333ff;">/accessibilityservice/AccessibilityServiceInfoCompatIcs;</span></strong>
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)
从上述错误中我们可以看到support_v4的包重复加载编译了,我们看一下gradle-app文件
[html] view
plain copy
print?
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.0'
<span style="color:#ff0000;">compile 'in.srain.cube:cube-sdk:1.0.42.1'</span>
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的包,所以我们需要去掉一个
看一下,libraries是否是我们所讲的那样,重复加载v4包
[java] view
plain copy
print?
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.0'
<span style="color:#ff0000;">compile ('in.srain.cube:cube-sdk:1.0.42.1'){
exclude module: 'support-v4'
}</span>
compile files('libs/android-async-http-1.4.6.jar')
}
去掉in.srain.cube:cube-sdk:1.0.42.1中的包不加载即可。
一、错误
[html] viewplain copy
print?
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:<strong> <span style="color:#3333ff;">Multiple dex files define Landroid/</span><span style="color:#ff0000;">support/v4</span><span style="color:#3333ff;">/accessibilityservice/AccessibilityServiceInfoCompatIcs;</span></strong>
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)
从上述错误中我们可以看到support_v4的包重复加载编译了,我们看一下gradle-app文件
[html] view
plain copy
print?
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.0'
<span style="color:#ff0000;">compile 'in.srain.cube:cube-sdk:1.0.42.1'</span>
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的包,所以我们需要去掉一个
看一下,libraries是否是我们所讲的那样,重复加载v4包
二、解决办法
[java] viewplain copy
print?
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.0'
<span style="color:#ff0000;">compile ('in.srain.cube:cube-sdk:1.0.42.1'){
exclude module: 'support-v4'
}</span>
compile files('libs/android-async-http-1.4.6.jar')
}
去掉in.srain.cube:cube-sdk:1.0.42.1中的包不加载即可。
相关文章推荐
- 多渠道打包apk
- 使用WEB工具快速提高Android开发效率
- Android BufferKnife使用时RecyclerView cannot be cast to android.widget.AdapterView
- 打造高质量Android应用-Hack1 使用weight 属性实现视图的居中显示
- Android实现将一个Activity设置成窗口样式的方法
- android动态加载.so,实现动态库升级
- 摘要Android 中常见的Bug
- android6.0 otg连接设备 点亮屏幕(案例)
- Android Studio 2.0 Beta 5发布,修复几个与即时运行相关的严重BUG.
- 关于Android皮肤更换分享
- android 开发过程中,两个包名相同的项目如何上传到同一个应用商城
- android下拉刷新控件 android-pulltorefresh
- Android 添加TextView删除线(代码简单)
- Android重写TextView实现文字整齐排版的方法(附demo源码下载)
- 【Android】10.2 使用Android Support Library增强组件功能
- 【Android】10.1 扩展组件库和其他视图--本章示例主界面
- android应用签名详解
- android 按钮事件
- Android studio 各种快捷键,使用技巧
- Android几个使用频率很高的adb命令小结