如前所述这里 ,Android的M将不支持的Apache HTTP API。 该文档状态:
使用HttpURLConnection的类代替。
要么
要继续使用Apache HTTP API,您必须首先声明在你的build.gradle文件中的以下编译时依赖性:
安卓{useLibrary 'org.apache.http.legacy'}
我已经转换多的HttpClient我的项目的使用情况,以HttpURLConnection类的,但是,我仍然需要使用HttpClient的少数地区。 因此,我想申报“org.apache.http.legacy”作为编译时的依赖,但我在的build.gradle得到一个错误:
摇篮DSL方法未找到: 'useLibrary()'
我的问题是:我怎么申报“org.apache.http.legacy”作为我的项目编译时依赖?
任何帮助深表感谢。 谢谢
Answer 1:
对于API 23:
顶级的build.gradle - /build.gradle
buildscript {
...
dependencies {
classpath 'com.android.tools.build:gradle:1.3.1'
}
}
...
模块特定的build.gradle - /app/build.gradle
android {
compileSdkVersion 23
buildToolsVersion "23.0.0"
useLibrary 'org.apache.http.legacy'
...
}
官方文档(预览虽然): http://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-apache-http-client
最新的Android插件的gradle更新日志: http://tools.android.com/tech-docs/new-build-system
Answer 2:
另一种方法是只需添加jbundle依赖。 这是更多的Android工作室友好由于Android Studio不给消息“无法解析符号......”
dependencies {
compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'
}
Answer 3:
只是复制文件: org.apache.http.legacy.jar
从Android/Sdk/platforms/android-23/optional
文件夹复制到项目文件夹中app/libs
。
工作就像魅力为23.1.1。
Answer 4:
在你的build.gradle文件中添加useLibrary“org.apache.http.legacy”按Android 6.0 Changes
> Apache HTTP Client Removal
的笔记。
android {
...
useLibrary 'org.apache.http.legacy'
...
}
为了避免丢失链接错误添加到依赖性
dependencies {
provided 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'
}
使用“”提供的依赖将不包括在APK
Answer 5:
注意为Android 9(PIE)。
此外,以useLibrary 'org.apache.http.legacy'
你必须在AndroidManifest.xml中添加:
<uses-library android:name="org.apache.http.legacy" android:required="false"/>
来源: https://developer.android.com/about/versions/pie/android-9.0-changes-28
Answer 6:
因为答案是有点老了,我会把我的解决方案(什么工作对我来说),它可以对别人有所帮助......我把我的解决方案从官方文档的Apache,没有变通的。
1 /的gradle中:
dependencies {
...
// This is the maintained version from apache.
compile group: 'cz.msebera.android', name: 'httpclient', version: '4.4.1.1'
}
2 /在应用程序的其余部分更换org.apache.http
通过cz.msebera.android.httpclient
和所有的进口(依赖)将其固定。 你可以做CTRL + SHIFT + R和整个项目替换它。
Answer 7:
我喜欢解决这样这个问题:
1)设置CLASSPATH在顶级构建文件为GUG提到:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.3.0-beta2'
}
allprojects {
repositories {
jcenter()
}
}
}
2.)在特定模块的构建文件:
android {
useLibrary 'org.apache.http.legacy'
compileSdkVersion 'android-MNC'
buildToolsVersion '23.0.0 rc3'
}
Answer 8:
FWIW去除阿帕奇库前一阵子被埋下了伏笔。 我们的好朋友杰西·威尔逊给了我们一个线索早在2011: http://android-developers.blogspot.com/2011/09/androids-http-clients.html
谷歌停止在ApacheHTTPClient工作前一阵子,所以这仍然是依赖于任何图书馆应该放到过时的库列表,除非维护更新他们的代码。
<rant>
我不能告诉你有多少技术参数我已经与谁在使用Apache HTTP客户坚持坚持的人。 但是也有一些会在我不至被命名为以前的雇主,因为管理层打破不听他们的顶尖工程师或知道他们在谈论时,他们忽略了警告,一些主要的应用程序......可是,在水中桥梁。
我赢了。
</rant>
Answer 9:
要解决问题,确保您使用的编译工具版本“23.0.0 RC2”使用以下工具的gradle构建依赖:
classpath 'com.android.tools.build:gradle:1.3.0-beta2'
Answer 10:
它应该帮助:
android {
...
useLibrary 'org.apache.http.legacy'
...
}
为了避免丢失链接错误添加到依赖性
dependencies {
provided 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'
}
要么
dependencies {
compileOnly 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'
}
因为
Warning: Configuration 'provided' is obsolete and has been replaced with 'compileOnly'.
文章来源: How to add Apache HTTP API (legacy) as compile-time dependency to build.grade for Android M?