AndroidManifest.xml中的using-library标签与Gradle中的useLibrary

时间:2019-04-08 11:05:27

标签: android gradle android-gradle android-9.0-pie

我想为Android P构建一个使用Apache HTTP客户端的项目。 据我了解,有两种方法可以做到这一点:

首先通过AndroidManifest.xml:

 <application
     ...
     <uses-library
         android:name="org.apache.http.legacy"
         android:required="false" />
 </application>

第二次通过build.gradle:

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

这些方法等效吗?

为什么构建gradle中的android.useLibrary命令不会在AndroidManifest.xml中添加uses-library标签?

2 个答案:

答案 0 :(得分:0)

扩展CommonsWare的评论。

使用gradle依赖项来使用apache http客户端,不要修改android manifest.xml。

将build.gradle修改为

  dependencies {
            implementation 'org.apache.httpcomponents:httpclient-android:4.3.5.1'
                }

答案 1 :(得分:0)

将此添加到AndroidManifest.xml时应在运行时通知Android这些类存在:

<uses-library
      android:name="org.apache.http.legacy"
      android:required="false" />

参考:specify_requirement_for_apache_http_legacy_library

build.gradle声明确保该库在编译时可用。

useLibrary 'org.apache.http.legacy'

参考:behavior-apache-http-client