Android support庫版本沖突分析與解決

問題描述

我們項目找經常經常看到庫依賴沖突,例如下面的編譯日志:

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:preDebugBuild'.
> Android dependency 'com.android.support:recyclerview-v7' has different version for the compile (25.3.1) and runtime (27.0.1) classpath. You should manually set the same version via DependencyResolution

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

編譯日志告訴我們,項目中依賴了 recyclerview-v7 的兩個版本, 25.3.1 和 27.0.1 ,兩個版本產生沖突。

查找依賴

通過 gradlew dependencies 可以查找是哪個庫依賴了這兩個不同 reycclerview版本。

在工程根目錄執(zhí)行如下命令:

gradlew dependencies > diagnose.txt

命令會將工程的依賴樹輸出到文件中,執(zhí)行完成后我們可以在項目根目錄發(fā)現 diagnose.txt ,
下面是一段文件的部分內容

+--- project :lib
\--- com.lzy.widget:imagepicker:+ -> 0.6.1
     +--- com.android.support:appcompat-v7:25.3.1 -> 27.1.1 (*)
     +--- com.android.support:recyclerview-v7:25.3.1
     |    +--- com.android.support:support-annotations:25.3.1 -> 27.1.1
     |    +--- com.android.support:support-compat:25.3.1 -> 27.1.1 (*)
     |    \--- com.android.support:support-core-ui:25.3.1 -> 27.1.1 (*)
     \--- com.github.chrisbanes.photoview:library:1.2.4
          \--- com.android.support:support-v4:22.0.0
               \--- com.android.support:support-annotations:22.0.0 -> 27.1.1

可以看到 com.lzy.widget:imagepicker:+ 依賴了 com.android.support:recyclerview-v7:25.3.1 與工程其他地方的依賴沖突。

解決沖突

可以在app模塊中,指定一個 recyclerview 版本。在app模塊的 build.gradle 添加如下依賴

dependencies {
   //省略
   implementation 'com.android.support:recyclerview-v7:27.0.1'
}

另外

在提供庫,可以把 support 包從 implementation 改為 compileOnly,這樣方便使用

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容