gpt4 book ai didi

android - useLibrary 和build.gradle 中的编译文件 ('' ) 的原理有什么区别?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:13:27 24 4
gpt4 key购买 nike

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.gradleuseLibrarycompile files('')有什么区别?只是因为遗留 jar 文件在 android SDK 中,所以我可以在 build.gradle 中声明 useLibrary 来使用它?我可以这样使用其他 jar 吗?

有人可以对此提供一些想法吗?

最佳答案

useLibrary 在编译时将库添加到类路径,但不将库与应用程序 bundle 在一起。

compile 依赖项在编译时位于类路径中,此外它们随您的 APK 一起提供。

对于 Apache HttpClient 支持,在使用 SDK 23+ 编译时使用 useLibrary。该库已存在于目标平台中。它只是不存在于编译 SDK 中。

关于android - useLibrary 和build.gradle 中的编译文件 ('' ) 的原理有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33014306/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com