v7包包含v4包:maven引入v7包,gradle会自动加入所有v4包的依赖,并且和v7相同的版本。
v4包引入分析:
- 都是maven的方式引入v4包:不会冲突,gradle会自动选择较高版本
- maven引入,同时本地引入v4包:如果版本相同,不会冲突,否则冲突
结论v4依赖冲突实质:是不同v4版本的冲突,并且是maven和本地引入版本不同才会冲突
解决办法:
项目通常会使用很多开源库,统一所有的v4包版本不现实,只能通过exclude方法过滤某些库的v4包,
保证整个项目只引用一个版本。
- 查看当前各种库的依赖:
- 找到版本冲突的库,打开开源库lib目录,删除对应的jar包,改为maven引入方式
- 如果app要必须使用本地lib引入v4包,那就排除开源库的v4包,
compile('com.joanzapata.iconify:android-iconify-ionicons:2.2.2') { exclude module: 'support-v4' }
如果是源码方式引入开源库:compile((project':thirdpart:RecyclerViewAdapterLibrary')){ exclude group:'com.android.support' }