繁体   English   中英

useLibrary的原理与build.gradle中的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类。 据说此API效率更高,因为它通过透明压缩和响应缓存减少了网络使用,并最大程度地降低了功耗。 如果要继续使用Apache HTTP API ,则必须首先在build.gradl e文件中声明以下编译时依赖项:

android {
    useLibrary 'org.apache.http.legacy'
}

旧版jar位于Android SDK中 ,其路径为sdk/platforms/android-23/optional/ 因此,它几乎是独立的。 同时,此apache旧版jar放在Android SDK中的optional/中,那么什么是optional/ 这意味着什么?

我们也知道,我们可以将这个jar放入libs ,然后在build.gradle文件中声明它,如下所示:

dependencies {
    compile files('libs/org.apache.http.legacy.jar')
}

测试时,这两种方法均按预期工作。

但为什么?

useLibrarycompile files('')有什么build.gradle 只是由于传统的jar文件采用的是Android SDK,所以我可以声明useLibrarybuild.gradle使用它呢? 我可以这样使用其他罐子吗?

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

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

compile依赖项在编译时位于classpath中,此外,它们还随APK一起提供。

为了获得Apache HttpClient的支持,在使用SDK 23+进行编译时,请使用useLibrary 该库已经在目标平台中了。 它只是在编译SDK中不存在。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM