背景
在 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"类)时,我发现它不允许我这样做。 我知道不建议使用这个解决方案,但是我们必须让应用程序准备好工作,至少在Android Marshmallow的所有应该更改的事情都100%完成之前,我们不希望出现崩溃等意外情况。这里是截图:
问题是什么?为什么会发生这种情况?我使用它正确吗?编辑:在这里报告了这个问题:https://code.google.com/p/android/issues/detail?id=181474