android - API 23 更新后 Android SDK 和 Apache HTTP 之间的冲突

标签 android apache android-studio android-sdk-tools

在我的项目中,我使用了这些库:

compile 'org.apache.httpcomponents:httpclient:4.5.2'
compile 'org.apache.httpcomponents:httpcore:4.4.4'

一切正常,直到我为 API 23 更新了 Android 工具。然后当我尝试执行 HttpPost 时,出现以下异常:

java.lang.NoSuchFieldError: INSTANCE
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.<clinit>(SSLConnectionSocketFactory.java:144)
at org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:966)
at org.apache.http.impl.client.HttpClients.createDefault(HttpClients.java:58)

这是它发生的库代码:

public class SSLConnectionSocketFactory implements LayeredConnectionSocketFactory {

public static final String TLS   = "TLS";
public static final String SSL   = "SSL";
public static final String SSLV2 = "SSLv2";

@Deprecated
public static final X509HostnameVerifier ALLOW_ALL_HOSTNAME_VERIFIER
    = AllowAllHostnameVerifier.INSTANCE;

查看外部库时,我可以看到 android.jar 下的 AllowAllHostnameVerifier 类:

AllowAllHostnameVerifier under android.jar

当使用这个问题的答案中的代码时:java.lang.NoSuchFieldError: org.apache.http.message.BasicLineFormatter.INSTANCE from Mashape Unirest in Java application

我得到这个输出:

jar:file:/E:/Program%20Files/Eclipse%20Android%20SDK/adt-bundle-windows-x86_64-20140702/sdk/platforms/android-23/android.jar!/org/apache/http/conn/ssl/AllowAllHostnameVerifier.class

所以我可以看到构建是从 SDK 而不是 Apache 库中获取此类。

所以问题是,我如何修复我的类路径或其他必要的配置,以指示构建像以前一样从 Apache 使用这些类,而不是从 SDK?

提前致谢!

最佳答案

简而言之,只需编辑android.jar 文件,删除需要被Apache 库替换的类。

关于android - API 23 更新后 Android SDK 和 Apache HTTP 之间的冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36908769/

相关文章:

performance - 是否有类似 mysqltuner.pl 的 Apache 调谐器脚本?

android - 关闭 Android Studios 糟糕的风格建议?

android - 找不到以下类 : - android. support.design.widget.TextInputLayout

linux - Android Studio 看不到 Chrome 设备

java - Kotlin "as"的 Java 同义词是什么?

java - LibGdx - 如何从播放器获取输入,同时也能够从舞台获取输入

php - 安全地服务于其他人的 PHP

android - 如何在 LinearLayout 中对齐单选按钮中心

java - Android Stock 电子邮件应用程序不想与 pop3 服务器一起使用

apache - 如何使用 .htaccess 文件重写子目录的 URL?