2016-03-19 12 views
8

私のAndroidプロジェクトでは、jarファイルとして提供されるライブラリを使用しています。 私はそうのような依存関係セクションに含める:Android Gradleビルドでは、付属のjarファイルから依存関係を除外する方法は?

dependencies { 
    ... 

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

私も、私はこのように含まれ、okhttpライブラリを使用したい:

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

(okhttpのこの特定のバージョンは1.6 okio依存.0。)

問題は、thirdparty jarライブラリはokio v0.9.0に依存しています。さらに悪いことに、それをバンドルします。

結果、ビルド時にデクス競合エラーが発生します。

jarファイルから手動でokioを削除することでこれを解決できましたが、これはうまくいくようです。しかし、私はgradleでこれを行う方法があるのだろうかと思っています。

私の質問:バンドルされた推移的(< - 私はこの言葉を正しい方法で使用していることを望んでいます)、gradleを使ってビルド時に付属のjarファイルから依存関係を削除できますか?

+1

不要なクラスを削除するためにサードパーティのjarファイルを単純に再作成することができない理由は何ですか?私はgradleがファイル依存から除外する特定のクラスを選択できるとは思わない。 –

+0

実際、これは私が今やっていることです。私はgradleでこれを行う(単純な)方法があるかどうか疑問に思っていたので、ベンダライブラリが変更されるたびに手動で行う必要はありません。 – treesAreEverywhere

+1

こんにちは、これを解決しましたか?あなたのソリューションを共有できますか? –

答えて

6

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

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

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

+0

1.動作しますが、問題は1つのバージョンを含めることです。 – treesAreEverywhere

+2

2.この構文はファイルベースのjarファイル(AFAIK ...)では機能しません – treesAreEverywhere

+0

3.私は私は実際にライブラリの1つのバージョンを含めることを望んでいるので、これをやりたいと思います - 私はJARのものを使いたくないです – treesAreEverywhere

関連する問題