如何在Android Marshmallow上使用传统的Apache HTTP客户端?
背景
在Android Marshmallow上,Google已经完全删除了对Apache HTTP客户端的支持(链接在这里),因为它与替代方案相比没有良好的性能。
这也可能是导致许多应用程序在Android Marshmallow上崩溃的原因。
问题
Google 允许您仍然使用此 API,只是不将其作为内置 API,方法是将以下行添加到 gradle 文件中:
useLibrary 'org.apache.http.legacy'
所以,这就是我所做的:
dependencies {
classpath 'com.android.tools.build:gradle:1.3.0'
}
和:
android {
compileSdkVersion 'android-MNC'
buildToolsVersion "23.0.0 rc3"
useLibrary 'org.apache.http.legacy'
defaultConfig {
applicationId "com.example.user.androidmtest"
minSdkVersion 'MNC'
targetSdkVersion 'MNC'
versionCode 1
versionName "1.0"
}
当我尝试它时,它编译得很好(没有显示错误,我可以运行概念验证应用程序,因为它没有任何特殊代码),但是当我尝试使用一些我知道是旧API一部分的类(如“HttpClient”类)时,我发现它不允许我这样做。
我知道不建议使用此解决方案,但是我们必须让应用程序至少暂时准备好在那里工作,直到我们100%处理Android Marshmallow应该改变的所有事情,并且我们不希望以崩溃的形式出现意外。
下面是一个屏幕截图:
问题
为什么会发生这种情况?我是否正确使用它?
编辑:在这里报告了这个问题: