useLibrary的原理与build.gradle中的compile files('')有什么区别?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了useLibrary的原理与build.gradle中的compile files('')有什么区别?相关的知识,希望对你有一定的参考价值。

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') }

两种方法在我测试时都按预期工作。

但是为什么?

useLibrary中的compile files('')build.gradle有什么区别?仅因为旧版jar文件位于android SDK中,所以我才能在useLibrary中声明build.gradle来使用它?我可以这样使用其他罐子吗?

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

在Android 6.0发行后,已删除了对Apache HTTP客户端的支持。如果我们的应用程序正在使用此客户端,并且定位到Android 2.3(API级别9)或更高版本,则建议使用HttpURLConnection类。它是......

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

以上是关于useLibrary的原理与build.gradle中的compile files('')有什么区别?的主要内容,如果未能解决你的问题,请参考以下文章

MPAndroid 的学习

Retrofit的优点

gradle Experiment 0.6.0-alpha1 中的 useLibrary 变成了啥?

Android Studio中一套代码多渠道打包

多渠道打包

Jetpack学习-WorkManager