【发布时间】:2015-10-07 22:05:25
【问题描述】:
在遗留代码库上工作仍然坚持使用过时的 Apache HttpClient(摆脱它是在“下一次发布之后”路线图中)。使用通过在扩展 DefaultHttpClient 的类中覆盖 createClientConnectionManager() 实现的证书固定:
public class CustomHttpClient extends DefaultHttpClient {
public CustomHttpClient() {
// calling no-arg super ctor implicitly
}
@Override
protected ClientConnectionManager createClientConnectionManager() {
// return ThreadSafeClientConnManager
// using a SchemeRegistry for https port 443
// with certificate-pinning SSLSocketFactory for https port 443
}
这适用于使用compileSdkVersion 23 和useLibrary 'org.apache.http.legacy' 的调试版本。这适用于没有旧支持库的较小编译 SDK 版本的调试和发布版本。
这不适用于带有 compileSdkVersion 23 和旧支持库的发布版本。 createClientConnectionManager() 未被调用。
Proguard 已启用发布版本,其设置遵循 SDK proguard-android-optimize.txt,并为旧支持库添加了以下内容:
-dontwarn org.apache.http.**
添加-dontoptimize 没有效果。
使用minifyEnabled false 禁用proguard 会再次调用覆盖。然而,禁用 proguard 对我来说不是一个选项。
我知道一种解决方法。有兴趣了解根本原因以及更好的解决方法。
【问题讨论】:
标签: android proguard apache-httpclient-4.x android-6.0-marshmallow