1. 程式人生 > >解決依賴庫版本不一致導致的問題

解決依賴庫版本不一致導致的問題

我們在寫程式碼時候總會借鑑一些第三方庫,有的是別人寫的比較優秀的,有的則是google官方提供的,但是我們在依賴之後編譯執行時候總會出各種各樣的問題:

1、Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.

> java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex  

2、“Error:Execution failed for task ':app:preDebugBuild'.

> Android dependency 'com.android.support:appcompat-v7' has different version for the compile (27.0.2) and runtime (27.1.0) classpath. You should manually set the same version via DependencyResolution”,

針對上面的support:appcompat庫我們可以像下面一樣子來指定自己所依賴的版本:

在build.gradle的dependencies中新增如下程式碼即可

configurations.all {
        resolutionStrategy.force 'com.android.support:support-annotations:26.1.0'
        //迴圈一個個的依賴庫
        resolutionStrategy.eachDependency { DependencyResolveDetails details ->
            //獲取當前迴圈到的依賴庫
            def requested = details.requested
            //如果這個依賴庫群組的名字是com.android.support
            if (requested.group == 'com.android.support') {
                //且其名字不是以multidex開頭的
                if (!requested.name.startsWith("multidex")) {
                    //這裡指定需要統一的依賴版本
                    details.useVersion '27.1.0'
                }
            }
        }
    }