Android Multiple dex files define 解决包冲突
这段时间有一个新需求,安卓App通过URL在线预览PDF。选择使用并倒入PdfViewPager库时,报了如下异常:
jdmerchants:transformDexArchiveWithExternalLibsDexMergerForTestServerDebug com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex Multiple dex files define Luk/co/senab/photoview/log/Logger
出现Multiple, dex字样,直接想到的可能就是重复倒入依赖了,那么问题来了:
为什么我导入PdfViewPager类库的时候会产生重复依赖问题?
PdfViewPager类库里和我现有的依赖类库什么文件重复?
如何确定是哪某个类库里的文件和PdfViewPager类库产生重复的依赖了?
定位问题缘由
我用的是Mac下的Android Studio 3.1开发
首先需要找到一个工具或者方法,能了解到当前项目中所有类库内部的依赖情况。这里提供一种方法,输入下面命令
./gradlew -q 模块名:dependencies
在命令行窗口就能列出当前模块的所有依赖情况。我选取了和这次问题有关内容的,展示如下:
\--- es.voghdev.pdfviewpager:library:1.0.
+--- com.android.support:appcompat-v7:25.4. (*)
\--- com.commit451:PhotoView:1.2.
\--- com.android.support:support-v4:23.0. -> 25.4. (*) \--- com.github.chrisbanes.photoview:library:1.2.
\--- com.android.support:support-v4:22.0. -> 25.4. (*)
会发现,新引入的pdfviewpager类库用到了com.commit451:PhotoView:1.2.4;这和com.github.chrisbanes.photoview:library:1.2.4类库重复了
解决问题
问题我们找到了:pdfviewpager类库依赖了chrisbanes.photoview类库,造成chrisbanes.photoview类库重复使用,因此只要在引入pdfviewpager的时候,排除掉com.commit451:PhotoView:1.2.4就可以了
那么如何排除呢?Gradle构建项目肯定想到了这种情况下的处理--引入第三方类库时排除掉里面的某个依赖库:
compile ('es.voghdev.pdfviewpager:library:1.0.3'){
exclude group: 'com.commit451', module:'PhotoView'
}
小结
遇到了之前未曾遇到的问题,这个问题所需的知识点又是之前未曾储备的盲区,这时候google搜索找到相似的问题的答案要能作类比和知识延伸,慢慢思考,有效思考,得出一点新的结论,然后继续思考,就能越来越接近解决问题的成功路径了
参考资料
Android Multiple dex files define 解决包冲突的更多相关文章
- eclipse:运行 Android 项目时出现 “Unable to execute dex: Multiple dex files define” 解决方法
android 项目在eclipse 出现Unable to execute dex: Multiple dex files define Conversion to Dalvik format fa ...
- Unable to execute dex: Multiple dex files define 解决方法
程序编译正常,在用Eclipse调试执行时,报错Unable to execute dex: Multiple dex files define: 方法: 原因是有重复的.jar被引用,可以 ...
- 转:Unable to execute dex: Multiple dex files define 解决方法
转自:http://blog.csdn.net/mxlxiao7/article/details/8978930 问题发生概述: 程序编译正常,在用Eclipse调试执行时,报错Unable to e ...
- Multiple dex files define解决记录
引用多个library时经常会遇到Multiple dex files define错误,最常见的是support库多次定义,此时可用以下gradle命令来查看工程的引用树: gradlew -q d ...
- [Android开发常见问题-11] Unable to execute dex: Multiple dex files define 解决方法
最近在开发一个工程,其中用到了一个开源的库项目Android-ViewPagerIndicator. 这个项目是作为一个库出现的,如下图: 这个项目中包含了android-support-v4.jar ...
- Android Multiple dex files define BuildConfig
dexOptions { preDexLibraries = false }
- Android 友盟和微信的包冲突:Multiple dex files define Lcom/tencent/a/a/a/a/a;
最近App中有个需求是添加微信支付,就在微信技术官网 http://open.weixin.qq.com,查看一下文档,然后下载SDk,Demo.把SDK集成进项目. 照着微信的文档,把jar包和进来 ...
- Android Studio com.android.dex.DexException: Multiple dex files define(重复引用包),androiddefine
Android Studio com.android.dex.DexException: Multiple dex files define(重复引用包),androiddefine 如果你用Andr ...
- 解决com.android.dex.DexException: Multiple dex files define Lcom/google/gson/JsonSerializer;
我在开发Windows Azure的Mobile Service(隔天补上创建过程)的安卓客户端时,报出了com.android.dex.DexException: Multiple dex file ...
随机推荐
- Linux三剑客之grep常用参数详细总结
三剑客grep总结 grep : Linux三剑客老三 过滤需要的内容 参数: grep一般常用参数: -a :在二进制文件中,以文本文件的方式搜索数据 -c :计算找到 ’ 搜索字符串 ...
- XSS练习平台- https://alf.nu/alert1
https://alf.nu/alert1 参考:https://www.cnblogs.com/renzongxian/p/5617551.html 我目前的进度:https://alf.n ...
- js 返回一个数组里面0出现的次数
var num = new Array(10000).fill('').map((item,index) => (index + 1)). 在点号后面补充代码,让num是这个数组中0出现的次数, ...
- ubuntu 16.04主题美化
目录 numix图标 Flatabulous主题 参考: Unity-tweak-tool插件 numix图标 sudo apt-add-repository ppa:numix/ppa sudo a ...
- 【ActiveReports 大数据分析报告】2019国庆旅游出行趋势预测
今年国庆假期全国接待国内游客人数有望达到8亿人次! 随着2019国庆小长假的临近,不少游客已经开始着手规划假期出游路线.据权威机构发布的<2019国庆旅游趋势预测报告>显示,今年“十一黄金 ...
- PAT B1018.锤子剪刀布(20)
一个没有通过,不知道为何 #include <cstdio> int change(char c) { if(c == 'B') return 0; if(c == 'C') return ...
- sqlalchemy定义mysql时间戳字段
update_time = Column(TIMESTAMP, nullable=False, comment='更新时间戳', server_default=text('CURRENT_TIMEST ...
- 拨开Python迷雾
Python方向及能力要求 web就业方向:Python基础.Python高级.前端开发. web开发爬虫方向:Python基础.Python高级.前端开发.web开发. 爬虫开发数据挖掘/分析方 ...
- Codeforces 1236B. Alice and the List of Presents
传送门 显然每种礼物是互相独立的,一个礼物的分配不会影响另一个礼物 对于某个礼物 $x$ , 对于每个盒子来说,要么选要么不选,那么可以看成长度为 $m$ 的二进制序列 这个序列第 $i$ 位的数就代 ...
- ipairs与pairs的区别
ipairs 和pairs在lua中都是遍历tbale的函数可是两者有差别 1.pairs遍历table中的全部的key-vale 而ipairs会依据key的数值从1開始加1递增遍历相应的table ...