Gradle之强制依赖某个第三方库

96
AndroidRookie Excellent
2017.05.11 21:16* 字数 542

前言

在之前的一个项目中,compileSdkVersion和targetSdkVersion都是使用的24,都是使用最新的,紧跟潮流嘛,一直是相安无事。直到有一天接入一个第三方的SDK的时候,问题暴露了:第三方SDK仅仅只支持最大22的编译,23及以上他本身的SDK就会直接崩溃。没办法,只能降级项目中的编译版本来兼容他了。这一降,才知道不是那么好办的。

1.创建项目

如上图所示,创建了一个项目,compileSdkVersion、targetSdkVersion都是22,并且引用了一个appcompat-v7:22.2.1包。

2.提升引用appcompat-v7版本

看下图,将v7包提升到了23.2.1,就直接爆出了一个错误。

这个错误,如果单单只是在我们自己的项目中出现,还是很好解决的,要么降低v7的版本和sdk一致,要么就提升sdk版本和v7保持一致。但是,有得时候所引用的v7是在我们引用的开源库中引用的,我们自己的sdk不能提升,也不能修改开源库中的引用版本。

3.其他开源库appcompat-v7高版本

为了方便,我就自己创建了一个library并引用了,并且在library中引用了appcompat-v7:22.2.1,并且sdk都提升到了24.如下图:

编译一下app,爆出了和前面一样的错误。直接引用了最高版本的v7:24.1.0

是不是很绝望?自己的的SDK又不能提升,别人的引用又不能修改。Gradle提供了一个强制依赖的方法:

resolutionStrategy.force

4.resolutionStrategy.force

使用方法简单,只需要将以下脚本放在Android节点下即可

configurations.all {
    resolutionStrategy.force "com.android.support:appcompat-v7:22.2.1"
}

如图所示

总结

半年了,终于又开始写博客了。现在Android行情已经不是那么好了。

来来扫下码,关注一下吧,或者微信搜索AndroidRookie

微信公众号

AndroidRookie
Android开发小技巧
Gupao