当Android Studio项目编译打包apk时出现下面的错误:
com.android.dex.DexException: Multiple dex files define Landroid/support/v7/media/MediaRouter
别慌,这是由于项目中出现类冲突了。通过类全局查找(连续按两次shift),发现有多个jar包中出现此类。
常见的情况有以下几种:
1.项目自己引用jar包重复。
2.项目中jar包和三方SDK。
3.三方sdk之间都含有相同类。
4.打包时候出现编译错误,出现冲突。
项目中经常会继承多个sdk进行开发,但集成多了难免出现sdk中的一些类重复了,项目jar包中类的冲突从而导致编译不过。
解决办法如下,在module下的build.gradle依赖增加exclude排除冲突的类:
implementation ('android.example.testjar:testjar:1.0.17'){
exclude group: 'com.android.support'
}
如果是两个相同的jar ,直接删掉一个,当然可以不依赖此jar,只需要自己将用到的类集成在app里,这样也保证不发生冲突,也减少了依赖。