相关疑难解决方法(0)

如何在Android Marshmallow上使用传统的Apache HTTP客户端?

背景

在Android Marshmallow上,Google完全取消了对Apache HTTP客户端的支持(链接在这里),因为与替代方案相比,它没有良好的性能.

这可能也是Android Marshmallow上如此多应用程序崩溃的原因.

问题

通过将此行添加到gradle文件,Google允许您仍然使用此API,而不是内置的API:

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

所以,这就是我做的:

dependencies {
    classpath 'com.android.tools.build:gradle:1.3.0'
}
Run Code Online (Sandbox Code Playgroud)

和:

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"
    }
Run Code Online (Sandbox Code Playgroud)

当我尝试它时,它编译得很好(没有显示错误,我可以运行概念验证应用程序,因为它没有任何特殊代码),但当我尝试使用我知道的一些类时是旧API的一部分(如"HttpClient"类),我看到它不允许我这样做.

我知道不建议使用此解决方案,但我们必须让应用程序准备好至少暂时在那里工作,直到我们100%完成Android Marshmallow应该改变的所有事情,我们不希望出现意外情况.崩溃的形式.

这是一个截图:

在此输入图像描述

这个问题

它为什么会发生?我使用得当吗?


编辑:这里报告了这个问题:

https://code.google.com/p/android/issues/detail?id=181474

java android android-gradle-plugin android-6.0-marshmallow

74
推荐指数
5
解决办法
8万
查看次数