在Android开发中,如果我们引用了某些框架,而在我们自己的项目和其他框架中,分别引用了不同版本的support库,就会报如下警告:
提示的库为:com.android.support:appcompat-v7:27.1.1
提示信息:All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes). Found versions 27.1.1, 27.1.0. Examples include...
大致意思为不同版本的support库可能引起APP崩溃,发现27.1.1和27.1.0两个版本。
既然知道问题了,解决也很简单。
1.查看依赖关系
在Android Studio的Terminal中输入命令:
>gradlew app:dependencies
也可以输入如下命令来打印结果到文本中:
>gradlew app:dependencies >log.txt
如果提示'gradle' 不是内部或外部命令,也不是可运行的程序或批处理文件。,则需要将gradle所在目录的bin文件夹添加到Path系统环境变量中。一般在C:\Users\用户名\.gradle\wrapper\dists\下,找到最新版本或者你当前用的版本,我的目录为:
C:\Users\Administrator\.gradle\wrapper\dists\gradle-4.10-all\54ye4nru8k2rpf7xwj15he4fo\gradle-4.10\bin
在系统环境变量中,新建GRADLE_HOME变量,值为上述地址,然后在Path中添加%GRADLE_HOME%即可。
回到Android Studio的Terminal中重试上述命令,如果还不行,需要重启Android Studio。
2.查找库引用
经过第一步输出日志到log文件后,我们可以打开log文件,搜索27.1.0,找到对应的库,我的是picasso:
+--- com.squareup.picasso:picasso:2.71828
| +--- com.squareup.okhttp3:okhttp:3.10.0 (*)
| +--- com.android.support:support-annotations:27.1.0 -> 27.1.1
| \--- com.android.support:exifinterface:27.1.0
| \--- com.android.support:support-annotations:27.1.0 -> 27.1.1
3.排除对应版本的包
最后,我们只需要在picasso中排除掉低版本的库即可,因为我的报错是com.android.support:appcompat-v7,所以我要排除的是appcompat-v7包:
implementation("com.squareup.picasso:picasso:2.71828") {
exclude group: 'com.android.support'
exclude module: 'appcompat-v7'
}