Gradle之強制依賴某個第三方庫
前言
在之前的一個專案中,compileSdkVersion和targetSdkVersion都是使用的24,都是使用最新的,緊跟潮流嘛,一直是相安無事。直到有一天接入一個第三方的SDK的時候,問題暴露了:第三方SDK僅僅只支援最大22的編譯,23及以上他本身的SDK就會直接崩潰。沒辦法,只能降級專案中的編譯版本來相容他了。這一降,才知道不是那麼好辦的。
1.建立專案
![1760510-128470e7ae87ec54.png](https://i.iter01.com/images/fc50c5b6ce0de89ead21ab431b4edd960736f80f571e66ff1b58d65e08f7b395.jpg)
如上圖所示,建立了一個專案,compileSdkVersion、targetSdkVersion都是22,並且引用了一個appcompat-v7:22.2.1包。
2.提升引用appcompat-v7版本
看下圖,將v7包提升到了23.2.1,就直接爆出了一個錯誤。
![1760510-944569c147bb9f72.png](https://i.iter01.com/images/d8c9a0933d4ff4ff4cda3935e153f018449fd2bf26615f7e3c6e5e105377bcdc.png)
這個錯誤,如果單單只是在我們自己的專案中出現,還是很好解決的,要麼降低v7的版本和sdk一致,要麼就提升sdk版本和v7保持一致。但是,有得時候所引用的v7是在我們引用的開源庫中引用的,我們自己的sdk不能提升,也不能修改開源庫中的引用版本。
3.其他開源庫appcompat-v7高版本
為了方便,我就自己建立了一個library並引用了,並且在library中引用了appcompat-v7:22.2.1,並且sdk都提升到了24.如下圖:
![1760510-d3f67e7681992439.png](https://i.iter01.com/images/581ee6efbc9d1a248f4ed8a972b4b12fa4ae66fdde15579294eaf9fabb694722.png)
編譯一下app,爆出了和前面一樣的錯誤。直接引用了最高版本的v7:24.1.0
![1760510-962784de21e86337.png](https://i.iter01.com/images/4f088182f2eb3441965c06648402ca824a9083cdf0fa7d128e424ed24336b0aa.png)
是不是很絕望?自己的的SDK又不能提升,別人的引用又不能修改。Gradle提供了一個強制依賴的方法:
resolutionStrategy.force
4.resolutionStrategy.force
使用方法簡單,只需要將以下指令碼放在Android節點下即可
configurations.all {
resolutionStrategy.force "com.android.support:appcompat-v7:22.2.1"
}
如圖所示
![1760510-0084cf61b0c4ad80.png](https://i.iter01.com/images/c0466619e2626a1d02adf55e6112f2cfad2d5fd0aeeece848e6a8b94f760464a.png)
總結
半年了,終於又開始寫部落格了。現在Android行情已經不是那麼好了。
來來掃下碼,關注一下吧,或者微信搜尋AndroidRookie
![1760510-1b31e74cd48eec6f.jpg](https://i.iter01.com/images/ef820848a03f2fe5838f247d8cf29fded75afd76812aeb1052d2c355a70240db.jpg)
AndroidRookie
相關文章
- Gradle排除依賴模組的某個類Gradle
- 關於 Gradle 依賴庫的幾個東西Gradle
- rimraf 命令強制刪除依賴庫檔案
- idea gradle 專案依賴IdeaGradle
- Android Gradle 依賴配置:implementation & apiAndroidGradleAPI
- vue-cli3.0打包時如何忽略某個第三方依賴包Vue
- Maven依賴機制Maven
- 使用Gradle檢視Android專案中庫的依賴關係GradleAndroid
- 一文徹底搞清 Gradle 依賴Gradle
- Gradle根據引數配置不同的依賴Gradle
- maven 依賴衝突,忽略某個包中類的方法Maven
- 將你的Gradle依賴轉換為函式Gradle函式
- Android -Gradle依賴匯入及相關知識AndroidGradle
- build.gradle中正確地匯入RecyclerView依賴UIGradleView
- Gradle構建springboot專案的倉庫處理(包括外掛倉庫以及依賴倉庫)GradleSpring Boot
- Maven如何只打包專案某個模組及其依賴模組?Maven
- Gradle For Android (一) 基礎定義與依賴管理篇GradleAndroid
- Gradle 使用技巧(四) - 如何定位和解決依賴衝突Gradle
- [KubernetesClient | 底層依賴庫]client
- 不要依賴Mock庫 - ErwinMock
- 強制轉換檢視某個欄位為某個型別的sql型別SQL
- 使用IDEA模組之間依賴找不到依賴類Idea
- Flutter中如何強制某個頁面橫屏Flutter
- Maven依賴管理之BOMMaven
- 又一個強大的PHP5.3依賴注入容器PHP依賴注入
- 一個.NET內建依賴注入的小型強化版依賴注入
- .Net DI(Dependency Injection)依賴注入機制依賴注入
- idea在pom中引入第三方依賴Idea
- 解決Android studio中gradle依賴下載太慢的問題AndroidGradle
- .NET之預設依賴注入依賴注入
- 使用 Swift Package Manager 整合依賴庫SwiftPackage
- 如何發現Python依賴庫漏洞Python
- 依賴管理和依賴範圍
- 關於Gradle編譯時下載依賴失敗解決方法Gradle編譯
- 【譯】Android Gradle 外掛 4.0.0 中 Feature-on-Feature 的依賴關係AndroidGradle
- gradle構建springboot專案瘦身,外部依賴jar的終極方法GradleSpring BootJAR
- 依賴
- Golang 依賴注入設計哲學|12.6K 🌟 的依賴注入庫 wireGolang依賴注入
- kubernetes 依賴庫apimachinery中的 wait 庫功能(1)APIMacAI