【问题标题】:Conflict between Android SDK and Apache HTTP after API 23 updateAPI 23 更新后 Android SDK 和 Apache HTTP 之间的冲突
【发布时间】:2016-04-28 08:06:29
【问题描述】:

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

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类:

当使用这个问题的答案中的代码时: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 apache android-studio android-sdk-tools


【解决方案1】:

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

【讨论】:

  • 嗨!谢谢回答。我试图右键单击-> 删除并确认,但它似乎没有做任何事情。有没有更合适的方式来编辑android.jar?
  • 解压缩到一个文件夹,删除文件并再次压缩。它应该可以工作。
  • 我试过你说的,看起来不错,但是在构建时我得到了这个异常:com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '\build-tools\23.0.3\aapt.exe'' 以非零退出值 1 结束
  • @Nom1fan 等一下,我会在我的 IDE 中尝试一下
  • 我刚试了一下,在这里可以用。请附上更多错误信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多