从API23移除Apache HTTP Client会对Volley产生影响吗?

BNK*_*BNK 22 apache android httpresponse android-volley android-api-levels

正如我们所知,Apache HTTP Client已在API 23中删除

Apache HTTP客户端删除

但是,Volley库目前仍然使用Apache的库如

import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.StatusLine;
import org.apache.http.conn.ConnectTimeoutException;
import org.apache.http.impl.cookie.DateUtils;
Run Code Online (Sandbox Code Playgroud)

我测试了2个项目:一个用于compileSdkVersion 22,另一个用于compileSdkVersion 23获得2个截图:

compileSdkVersion 22

在此输入图像描述

compileSdkVersion 23

在此输入图像描述

我有两个问题:

  1. 当然,使用Volley的API23项目仍然可以成功运行.但是,我不明白他们如何Apache在运行时使用该库,他们是在API22或更低版本中找到的?
  2. 而且,我想知道在不久的将来,Volley会升级以便不再使用Apache图书馆吗?如果没有,当Apache我的图书馆完全删除并且不受支持时,我现在的项目是否仍会继续使用?

也许我的英语不太清楚,但希望你能理解我的问题.

任何解释将不胜感激.

更新:

从@ random的评论中,我使用谷歌的官方Volley库创建了一个新的API23项目(我的意思git clone https://android.googlesource.com/platform/frameworks/volley是谷歌建议的这里),而不是compile 'com.mcxiaoke.volley:library:1.0.17'build.gradle文件中使用.是的,在构建项目时因缺少Apache库而出错.必须按文档添加useLibrary 'org.apache.http.legacy'build.gradle文件中.


第二次更新:

我刚刚定制了谷歌的排球(作为我项目中的一个模块),删除了Apache库.请转到我的GitHub示例项目供您参考.但请注意,它尚未针对所有情况进行全面测试,并且我仅测试了02个简单案例:GET并且POST我的Web服务请求是ASP.NET Web API.

ran*_*dom 10

Android M中的Volley库似乎已经相当混乱了.已经为它提交了一个bug并得到谷歌的认可.

https://code.google.com/p/android-developer-preview/issues/detail?id=3013

您应该标记并跟踪它以进行任何进一步的更新

UPDATE

关于您的第一个问题,您不会因丢失apache文件而出错,因为您正在使用的库仍然使用API​​ 22编译

ANDROID_BUILD_TARGET_SDK_VERSION=22
ANDROID_BUILD_TOOLS_VERSION=22.0.1
ANDROID_BUILD_SDK_VERSION=22
Run Code Online (Sandbox Code Playgroud)

https://github.com/mcxiaoke/android-volley/blob/master/gradle.properties

还可以从库中检查此未解决的问题,您可以根据该问题添加旧库

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.0"

    useLibrary 'org.apache.http.legacy'
    ...
}
Run Code Online (Sandbox Code Playgroud)


Noo*_*ani 8

Apache HTTP客户端删除此预览删除对Apache HTTP客户端的支持.如果您的应用使用此客户端并定位到Android 2.3(API级别9)或更高版本,请改用HttpURLConnection类.此API更高效,因为它通过透明压缩和响应缓存减少了网络使用,并最大限度地降低了功耗.要继续使用Apache HTTP API,必须首先在build.gradle文件中声明以下编译时依赖项:

android {
    useLibrary 'org.apache.http.legacy'
}
Run Code Online (Sandbox Code Playgroud)

Android正在从OpenSSL转向BoringSSL库.如果您在应用程序中使用Android NDK,请不要链接不属于NDK API的加密库​​,例如libcrypto.so和libssl.so.这些库不是公共API,可能会在不同版本和设备之间发生更改或中断,恕不另行通知.此外,您可能会暴露自己的安全漏洞.相反,修改您的本机代码以通过JNI调用Java加密API或静态链接到您选择的加密库.