【发布时间】:2016-01-05 23:42:48
【问题描述】:
Android 6.0 发布后,对 Apache HTTP 客户端 的支持被移除。如果我们的应用正在使用此客户端并针对 Android 2.3(API 级别 9)或更高版本,建议使用 HttpURLConnection 类。据说这个 API 更高效,因为它通过透明压缩和响应缓存减少了网络使用,并最大限度地降低了功耗。如果我们想继续使用 Apache HTTP API,您必须首先在我们的 build.gradle 文件中声明以下编译时依赖项:
android {
useLibrary 'org.apache.http.legacy'
}
旧版 jar 位于 Android SDK 中,其路径为 sdk/platforms/android-23/optional/。所以,它几乎是独立的。同时,这个 apache legacy jar 被放入 Android SDK 中的optional/,那么optional/ 是什么?这是什么意思?
我们也知道,我们可以把这个 jar 放到 libs 中,然后在我们的 build.gradle 文件中声明它,如下所示:
dependencies {
compile files('libs/org.apache.http.legacy.jar')
}
当我测试时,这两种方法都按预期工作。
但是为什么呢?
build.gradle 中的useLibrary 和compile files('') 有什么区别?只是因为遗留的jar文件在android SDK中,所以我可以在build.gradle中声明useLibrary来使用它?我可以以这种方式使用其他罐子吗?
有人可以提供一些关于这个的想法吗?
【问题讨论】:
标签: android android-gradle-plugin android-build android-uselibrary android-apache-legacy