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