私の 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"
}
これを試してみてください。