一、情況描述
在eclipse或Android Studio開發時(筆者目前只用過Android Studio),設置Android SDK的編譯版本為23時,且使用了httpClient相關類的庫項目時:如Android-async-http時,會出現有一些類找不到的錯誤,或者找不到HttpClient類。
二、原因
android 6.0 (api 23)SDK,不再提供org.apache.http.*(只保留幾個類)。
三、解決方法
1.eclipse
libs中加入 org.apache.http.legacy.jar
上面的jar包在:**\android-sdk-windows\platforms\android-23\optional下(需要下載android 6.0的SDK)
2.android studio:
在相應的,module下的build.gradle中加入:
android{
useLibrary 'org.apache.http.legacy'
}
如圖:
四、HttpClient會在谷歌的安卓中消失的原因
一開始,谷歌安卓新出,庫中自帶HttpClient 4.0 測試預覽版。為與安卓保持API同步,HTTPClient不敢打動干戈。后來,HTTPCient 4.0逐漸成熟,Apache欲使Android跟進更新對應的庫,Android拒絕了。然而舊庫bug叢生,瑕疵遍地。故,今Apache新出一個HTTPClient for android。
那既然Android自帶的不好,為啥不直接導入Apache的呢?因為包名是一樣的,庫沖突。不是不能解決,也能,據說比較麻煩(筆者沒試過)。從Apache下載最新的httpclient源碼,把每個源文件包名改了,改成Android不沖突的。然后打包成jar文件,然后導入到Android工程的lib里。
現在,Android 6.0 已經移除了httpClient,於是我們可以從Apache下載HttpClient,然后導入到lib中,不用改名了。
更具體的解釋說明請點擊:點擊打開鏈接