問題描述android
咱們項目找常常常常看到庫依賴衝突,例以下面的編譯日誌:git
FAILURE: Build failed with an exception.github
* 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 DependencyResolutionapp
* 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.gradle
編譯日誌告訴咱們,項目中依賴了 recyclerview-v7 的兩個版本, 25.3.1 和 27.0.1 ,兩個版本產生衝突。
查找依賴ui
經過 gradlew dependencies 能夠查找是哪一個庫依賴了這兩個不一樣 reycclerview版本。spa
在工程根目錄執行以下命令:debug
gradlew dependencies > diagnose.txt日誌
命令會將工程的依賴樹輸出到文件中,執行完成後咱們能夠在項目根目錄發現 diagnose.txt ,
下面是一段文件的部份內容ci
+--- 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,這樣方便使用