build.gradle中useLibrary和compile files('')的原理有什么区别?
What's the difference between principles of useLibrary and compile files('') in build.gradle?
在 Android 6.0 版本发布后,移除了对 Apache HTTP 客户端 的支持。如果我们的应用程序正在使用此客户端并且目标为 Android 2.3(API 级别 9)或更高 ,建议使用 HttpURLConnection
class。据说这个 API 效率更高,因为它通过透明压缩和响应缓存减少了网络使用,并最大限度地减少了功耗。如果我们想继续使用 Apache HTTP APIs,您必须首先在我们的 build.gradl
e 文件中声明以下编译时依赖项:
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
来使用它?我可以这样使用其他罐子吗?
有人可以对此提供一些想法吗?
useLibrary
在编译时将库添加到类路径,但不将库与应用程序捆绑在一起。
compile
依赖项在编译时位于类路径中,此外它们会随您的 APK 一起提供。
对于 Apache HttpClient 支持,使用 SDK 23+ 编译时使用 useLibrary
。该库已存在于目标平台中。它只是不存在于编译 SDK 中。
在 Android 6.0 版本发布后,移除了对 Apache HTTP 客户端 的支持。如果我们的应用程序正在使用此客户端并且目标为 Android 2.3(API 级别 9)或更高 ,建议使用 HttpURLConnection
class。据说这个 API 效率更高,因为它通过透明压缩和响应缓存减少了网络使用,并最大限度地减少了功耗。如果我们想继续使用 Apache HTTP APIs,您必须首先在我们的 build.gradl
e 文件中声明以下编译时依赖项:
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
来使用它?我可以这样使用其他罐子吗?
有人可以对此提供一些想法吗?
useLibrary
在编译时将库添加到类路径,但不将库与应用程序捆绑在一起。
compile
依赖项在编译时位于类路径中,此外它们会随您的 APK 一起提供。
对于 Apache HttpClient 支持,使用 SDK 23+ 编译时使用 useLibrary
。该库已存在于目标平台中。它只是不存在于编译 SDK 中。