Multiple dex files define Landroid/support/v4/app/FragmentState
编译的时候,经常会遇到这个问题。该问题的主要原因是:项目中依赖的资源包中存在重复依赖,从而出现了这个问题。基于问题的主要原因出发,可以想到解决方案:把重复依赖的资源包删除或者排除在外。
而根据解决思路,由于实际情况的不同,可以有两种主要的解决思路:
1)若重复依赖的资源包被另一个资源包包含,则使用排除在外的方法;
2)若重复依赖的资源包为单独的一个资源包,则找到对应的重复资源包,直接删除即可
解决方案:
参考网上的解决方案,同时结合自身情况,提供一下三种主要的解决思路:
1.用gradle view看:
1)从 “file–setting–plugin”,安装具体见图
2)安装完成之后,可以通过 view–window tool—gradle view查看项目资源包的依赖关系
3)根据依赖关系,删除或者排除重复依赖的包
排除重复依赖包方法,如:
项目的build.gradle文件中,排除重复依赖的support-v4
compile - Classpath for compiling the main sources.
+--- com.commonsware.cwac:camera-v9:0.5.4
| +--- com.actionbarsherlock:actionbarsherlock:4.4.0
| | \--- com.google.android:support-v4:r7
| +--- com.commonsware.cwac:camera:0.5.4
| \--- com.android.support:support-v4:18.0.+ -> 18.0.0
\--- com.android.support:support-v4:18.0.+ -> 18.0.0
exclude
“`
dependencies {
compile(‘com.commonsware.cwac:camera-v9:0.5.4’) {
exclude module: ‘support-v4-23.4.0’
}
2.gradle命令看依赖
1)
在android studio的terminal中输入:(window环境)
gradlew :app:dependencies –configuration compile
其中,“app”为项目名称
2)同样的,知道资源包依赖关系之后,排除或者直接删除重复依赖的资源包即可
3.如果项目中同时使用了AndroidX的资源包,建议直接删除AndroidX的资源包
(我的项目情况是:主工程项目依赖了一个module,而依赖的module中使用了AndroidX的资源包,直接删除,使用Android基础库包的资源即解决了问题)
不足之处,敬请指出。