Android M HttpClient 删除会破坏兼容性?
Android M HttpClient removal breaks compatibility?
我们知道 Android M 已经移除了对 HttpClient 的支持。与它链接的应用程序必须明确说明:在您的 gradle 文件中添加库依赖项。
但是它会破坏与现有应用程序的向后兼容性吗?
假设我编写了一个支持 Api 级别 1 及更高级别的应用程序,并且自去年以来从未维护过。 app的targetSdkLevel肯定低于22,会不会在AndroidM上崩溃?源码可能丢了
答案看起来是是。
我通过SDK管理器查看了AndroidM源码,源码中没有客户端的包。
HttpClient 的程序包名称:
org.apache.http.client.HttpClient
现有路径:
org.apache.http.conn
org.apache.http.params
解决此问题的方法:
- 将此添加到您的 build.graddle:
android {
useLibrary 'org.apache.http.legacy'
}
- 将 OkHttp-UrlConnection 添加到您的 build.graddle:
compile 'com.squareup.okhttp:okhttp-urlconnection:2.4.0'
用法示例:
private static OkHttpClient okHttpClient = new OkHttpClient();
HttpURLConnection urlConnection = new OkUrlFactory(okHttpClient).open(url);
我们知道 Android M 已经移除了对 HttpClient 的支持。与它链接的应用程序必须明确说明:在您的 gradle 文件中添加库依赖项。
但是它会破坏与现有应用程序的向后兼容性吗?
假设我编写了一个支持 Api 级别 1 及更高级别的应用程序,并且自去年以来从未维护过。 app的targetSdkLevel肯定低于22,会不会在AndroidM上崩溃?源码可能丢了
答案看起来是是。
我通过SDK管理器查看了AndroidM源码,源码中没有客户端的包。
HttpClient 的程序包名称:
org.apache.http.client.HttpClient
现有路径:
org.apache.http.conn
org.apache.http.params
解决此问题的方法:
- 将此添加到您的 build.graddle:
android {
useLibrary 'org.apache.http.legacy'
}
- 将 OkHttp-UrlConnection 添加到您的 build.graddle:
compile 'com.squareup.okhttp:okhttp-urlconnection:2.4.0'
用法示例:
private static OkHttpClient okHttpClient = new OkHttpClient();
HttpURLConnection urlConnection = new OkUrlFactory(okHttpClient).open(url);