如何将Apache HTTP API(legacy)作为编译时间依赖项添加到Android M的build.grade中?
如上所述,Android M将不支持Apache HTTP API。 文档声明:
改用HttpURLConnection类。
要么
要继续使用Apache HTTP API,必须首先在build.gradle文件中声明以下编译时间依赖项:
android {useLibrary'org.apache.http.legacy'}
我把我的项目的HttpClient的使用大部分转换为HttpURLConnection,但是,我仍然需要在几个区域使用HttpClient。 因此,我试图声明“org.apache.http.legacy”作为编译时依赖项,但是在build.gradle中得到一个错误:
Gradle DSL方法未find:'useLibrary()'
我的问题是:我如何在我的项目中声明“org.apache.http.legacy”作为编译时间依赖项?
任何帮助深表感谢。 谢谢
对于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
另一种select是只添加jbundle依赖。 这是更多的Android Studio友好的Android Studio不会给消息“无法parsing符号…”
dependencies { compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2' }
刚从Android/Sdk/platforms/android-23/optional
文件夹复制文件: org.apache.http.legacy.jar
到项目文件夹app/libs
。
为23.1.1工作像魅力。
在你的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中
FWIW Apache库的移除前一阵子已经预示了。 我们的好朋友Jesse Wilson在2011年给了我们一个线索: http : //android-developers.blogspot.com/2011/09/androids-http-clients.html
前一段时间,Google停止了ApacheHTTPClient的工作,所以任何仍然依赖它的库都应该被放到不赞成使用的库列表中,除非维护者更新他们的代码。
<rant>
我不能告诉你有多less技术参数与坚持使用Apache HTTP客户端的人有过。 有一些主要的应用程序将被打破,因为在我不愿意提到的以前的雇主的pipe理人员没有听他们的顶级工程师,或者当他们忽略警告时就知道他们在说什么…但是,桥梁。
我赢了。
</rant>
由于答案有点老,我会把我的解决scheme(对我有用),对别人有帮助…我从Apache的官方文档中解决了我的解决scheme,没有解决办法。
1 /在gradle:
dependencies { ... // This is the maintained version from apache. compile group: 'cz.msebera.android', name: 'httpclient', version: '4.4.1.1' }
2 /在应用程序的其余部分用cz.msebera.android.httpclient
replaceorg.apache.http
,并且所有导入(依赖关系)都将被修复。 你可以做ctrl + shift + R并在整个项目中replace它。
我这样解决了这个问题:
1.)在顶层构build文件中设置类path为GUG提到:
buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.3.0-beta2' } allprojects { repositories { jcenter() } } }
2.)在特定模块的构build文件中:
android { useLibrary 'org.apache.http.legacy' compileSdkVersion 'android-MNC' buildToolsVersion '23.0.0 rc3' }
要解决这个问题,请确保使用以下工具构buildgradle依赖关系的构build工具版本“23.0.0 rc2”:
classpath 'com.android.tools.build:gradle:1.3.0-beta2'
它应该是帮助:
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' }