Gradle之強制依賴某個第三方庫

weixin_33727510發表於2017-05-11

前言

在之前的一個專案中,compileSdkVersion和targetSdkVersion都是使用的24,都是使用最新的,緊跟潮流嘛,一直是相安無事。直到有一天接入一個第三方的SDK的時候,問題暴露了:第三方SDK僅僅只支援最大22的編譯,23及以上他本身的SDK就會直接崩潰。沒辦法,只能降級專案中的編譯版本來相容他了。這一降,才知道不是那麼好辦的。

1.建立專案

1760510-128470e7ae87ec54.png

如上圖所示,建立了一個專案,compileSdkVersion、targetSdkVersion都是22,並且引用了一個appcompat-v7:22.2.1包。

2.提升引用appcompat-v7版本

看下圖,將v7包提升到了23.2.1,就直接爆出了一個錯誤。

1760510-944569c147bb9f72.png

這個錯誤,如果單單只是在我們自己的專案中出現,還是很好解決的,要麼降低v7的版本和sdk一致,要麼就提升sdk版本和v7保持一致。但是,有得時候所引用的v7是在我們引用的開源庫中引用的,我們自己的sdk不能提升,也不能修改開源庫中的引用版本。

3.其他開源庫appcompat-v7高版本

為了方便,我就自己建立了一個library並引用了,並且在library中引用了appcompat-v7:22.2.1,並且sdk都提升到了24.如下圖:

1760510-d3f67e7681992439.png

編譯一下app,爆出了和前面一樣的錯誤。直接引用了最高版本的v7:24.1.0

1760510-962784de21e86337.png

是不是很絕望?自己的的SDK又不能提升,別人的引用又不能修改。Gradle提供了一個強制依賴的方法:

resolutionStrategy.force

4.resolutionStrategy.force

使用方法簡單,只需要將以下指令碼放在Android節點下即可

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

如圖所示

1760510-0084cf61b0c4ad80.png

總結

半年了,終於又開始寫部落格了。現在Android行情已經不是那麼好了。

來來掃下碼,關注一下吧,或者微信搜尋AndroidRookie

1760510-1b31e74cd48eec6f.jpg
AndroidRookie

相關文章