问题描述
编译安卓项目时,报如下错误:
Android dependency 'com.xxx.lib:lib_xxx' has different version for the compile (1.0.10) and runtime (1.0.11) classpath. You should manually set the same version via DependencyResolution
分析
大的项目里通常有很多依赖包,而被依赖的包又依赖其他的包,就难免会出现包版本号不一致的问题. 查看项目依赖关系图方法: ./gradlew 模块名:dependencies > dep.log
如对于app模块,命令为:./gradlew app:dependencies > dep.log
,大致效果图如下:
在项目里统一最终的依赖包版本号,看报错是哪个包,就指定哪个包的最终版本号.(不过这样做,也有前提,那就是指定的这个版本号的包在各个用到的地方都是可以正常使用的.如果某个依赖包,在版本迭代过程中,删除了某些类或方法,而你的某个库用到了这些类或方法,那么当把版本号指定为新的版本时,该库就会出问题.那此时只能要求该库作出修改,改用新的版本.) 修改项目根目录下build.gradle文件,在allprojects下增加如下内容:
allprojects {
configurations.all {
resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
resolutionStrategy {
force "com.xxx.lib:lib_xxx:1.0.11"
}
}
}