Androidサードパーティライブラリによるsupportバージョンの競合解決策

1837 ワード

に質問
26にcompileSdkバージョンをアップグレードし、supportパッケージのバージョンを変更し、エラーを報告します.
all com.android.support libraries must use the exact same version specification(mixing versions can lead to runtime crashes)
つまり、導入されたサードパーティ製ライブラリと現在のコンパイルバージョンが競合しています.
解決する
一般的なこの問題解決策は、指定された競合ライブラリの依存箇所にexclude group: 'com.android.support'を追加し、競合ライブラリをコンパイルに含めないことです.
compile('xx.xxx.xxxxx:xxxxx:1.5.5') {
    exclude group: 'com.android.support'
}

しかし、問題はどのサードパーティライブラリが衝突しているのか分からないので、一つ一つチェックすることはできないのではないでしょうか.
この場合、gradleファイルに次のコードを追加して、すべてのサードパーティ製パッケージが指定されたバージョンのsupportパッケージを強制的に使用できるようにするだけです.
configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == 'com.android.support') {
            if (!requested.name.startsWith("multidex")) {
                details.useVersion '26.1.0'
            }
        }
    }
}   

また、サードパーティ製ライブラリを自分で書いて他人に使う場合、supportパッケージへの依存方式をprovided(またはcompileOnly,gradle 3.0)に変更し、supportをパッケージ化せずに使いやすい人.
gradle 3について0より多く
gradleが3.0にアップグレードされると、依存の仕方がより多くなり、最も顕著な変化は、これまで使用されていたcompileimplementationに置き換えることができ、例えば
implementation 'xx.xxx.xxxxx:xxxxx::1.5.5'
implementationとは、導入依存、このサードパーティパッケージ導入されたものを指し、プロジェクトでは使用できませんが、少しインターフェースの味がして、内部実装を遮断します.gradleコンパイルの速度を速めることができます.
同様にdebugcompile releasecompileに対してdebug implementation release implementationが対応している.
 
 
原文作者:c_j 33原文アドレス:http://blog.csdn.net/C_J33/article/details/79171579
以上、androidサードパーティ製ライブラリによるsupportバージョンの競合ソリューションの全文を紹介しました.Android開発の学習と使用に役立ちます.