web-dev-qa-db-ja.com

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で行う方法があるかどうか疑問に思っています。

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

18

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

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"
    }

これを試してください。 詳細

30

ここでのこの議論によると https://groups.google.com/forum/#!topic/adt-dev/g1AiJM7PeVs 、あなたがしたいことは不可能です。

他の回答で提案されている構文は、「通常の」Maven依存関係用です。

1
Johan Paul