Android Gradle ビルドで、含まれている jar ファイルから依存関係を除外するにはどうすればよいでしょうか? 質問する

Android Gradle ビルドで、含まれている jar ファイルから依存関係を除外するにはどうすればよいでしょうか? 質問する

私の Android プロジェクトでは、jar として提供されるライブラリを使用します。次のように依存関係セクションに含めます。

dependencies {
    ...

    compile files('libs/thethirdpartylibrary.jar')
    ...
}

また、okhttp ライブラリも使用したいので、次のように含めます。

compile ('com.squareup.okhttp:okhttp:2.7.5')

(この特定のバージョンの okhttp は okio 1.6.0 に依存します。)

問題は、サードパーティの jar ライブラリが okio v0.9.0 に依存しており、さらに悪いことに、それをバンドルしていることです。

その結果、ビルド時に dex 競合エラーが発生します。

jar ファイルから okio を手動で削除することでこの問題を解決できました。これは機能しているようです。しかし、Gradle でこれを行う方法があるかどうか疑問に思っています。

質問: gradle を使用したビルド時に、含まれている jar からバンドルされた推移的な (<- この言葉を正しく使用していることを願っています) 依存関係を削除できますか?

ベストアンサー1

以下の行を使用して、依存関係内のグループを除外します。

1.

configurations {
    all*.exclude group: 'com.android.support', module: 'support-v4'
}

2.

dependencies {
    compile 'com.android.support:support-v4:13.0.+'
    compile ("com.xxx:xxx-commons:1.+") {
        exclude group: 'junit', module: 'junit'
    }
}

3.

configurations {
    runtime.exclude group: "org.slf4j", module: "slf4j-log4j12"
}

これを試してみてください。

詳細は

おすすめ記事