「gradle build」を実行しようとすると、このエラーが表示されます
WARNING: Dependency org.Apache.httpcomponents:httpclient:4.2.3 is ignored for the default configuration as it may be conflicting with the internal version provided by Android.
In case of problem, please repackage with jarjar to change the class packages
:prepareFreeDebugDependencies
:compileFreeDebugAidl UP-TO-DATE
:generateFreeDebugBuildConfig UP-TO-DATE
:mergeFreeDebugAssets UP-TO-DATE
:compileFreeDebugRenderscript UP-TO-DATE
:mergeFreeDebugResources UP-TO-DATE
:processFreeDebugManifest UP-TO-DATE
:processFreeDebugResources UP-TO-DATE
:compileFreeDebug
/home/xrdawson/Projects/Foo/Bar/src/main/Java/com/Foo/app/PixActivity.Java:20: error: package org.Apache.http.entity.mime does not exist
import org.Apache.http.entity.mime.HttpMultipartMode;
^
Build.gradleの最後は次のようになります。
repositories {
mavenCentral()
}
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile "org.Eclipse.mylyn.github:org.Eclipse.egit.github.core:2.1.3"
compile "com.madgag:markdownj-core:0.4.1"
// compile "org.Apache.httpcomponents:com.springsource.org.Apache.httpcomponents.httpclient:4.2.1"
compile 'org.Apache.httpcomponents:httpclient:4.2.3'
compile "com.google.Android:support-v4:r6"
}
}
コンパイルプロセスでHttpClientが無視されるのに、コンパイルに失敗するのはなぜですか?
HttpclientライブラリにはMIMEパーツは含まれていないと思います。これらはhttpmimeにあります。これは、httpclientの推移的な依存関係ですが、無視されるため、考慮されません。
この依存関係を追加してみてください。
compile "org.Apache.httpcomponents:httpmime:4.2.3"
http-mime
を依存関係として追加すると、httpclient
が推移的な依存関係として含まれるので、私にとっては、OPと同じ警告が表示されます。推移的な依存関係を無視するようにgradleに指示する必要がありました。
compile ('org.Apache.httpcomponents:httpmime:4.3.5') {
// avoid "is ignored for the default configuration X" warnings
// since httpclient is included in the Android SDK.
exclude group: 'org.Apache.httpcomponents', module: 'httpclient'
}
Androidでは、Mavenディストリビューションを再パッケージ化したHttpClient 4.3.Xが利用可能になりました
プロジェクトリポジトリ: https://github.com/smarek/httpclient-Android
Mavenタグ:cz.msebera.Android:httpclient:4.3.+
Maven Centralリポジトリに公開
バージョン4.3.3では、HttpCore、HttpClient、HttpClient-Cache、およびHttpMime(すべて同じバージョン)が含まれます
免責事項:私はこのプロジェクトの著者です
これに追加して、compileSdkVersionが19(IN MY CASE)の場合、これを使用して問題を解決しました。
compile ('org.Apache.httpcomponents:httpmime:4.3'){
exclude group: 'org.Apache.httpcomponents', module: 'httpclient'
}
compile ('org.Apache.httpcomponents:httpcore:4.4.1'){
exclude group: 'org.Apache.httpcomponents', module: 'httpclient'
}
compile 'commons-io:commons-io:1.3.2'
または、compileSdkVersionが23の場合は、使用します
Android {
useLibrary 'org.Apache.http.legacy'
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
}
公式のAndroid APIにはhttpclientが含まれているため、推移的な依存関係を含む、httpclientへの依存関係をすべて削除します。
本当にhttpclientを使用したい場合は、jarjarで再パッケージし、パッケージの名前を変更して、代わりにこれを使用します。
Httpmimeに関しては、実際にはAndroid.jarにないように見えるため、フィルタリングを避けることができますが、今のところは手動で追加する必要があります。
おそらく、ビルドシステムが1.0になる前にこれを微調整する必要があります。
これをbuild.gradle(Module:app)ファイルに追加するだけです:
dependencies {
...
implementation "org.Apache.httpcomponents:httpmime:4.5.6"
}