'org.apache.http.message.BasicHeader' does not implement interface 'org.apache.http.NameValuePair'

記錄一個崩潰問題
崩潰詳情如下

java.lang.IncompatibleClassChangeError: Class 'org.apache.http.message.BasicHeader' does not implement interface 'org.apache.http.NameValuePair' in call to 'java.lang.String org.apache.http.NameValuePair.getName()' (declaration of 'com.android.volley.toolbox.BasicNetwork' appears in base.apk)
	at com.android.volley.toolbox.BasicNetwork.convertHeaders(BasicNetwork.java:3)
	at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:8)
	at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:13)

從錯誤日誌來看是由於BasicHeader沒有實現NameValuePair接口導致的
但是奇怪的是運行沒有混淆的包,沒有問題
但是運行混淆的包,啓動就崩潰
在項目中查找BasicHeader有兩個類,聯想到因爲項目最近升級了編譯版本爲29導致httpClint出現了兩個版本

解決方案:
第一步:單獨把29版本的httpclient.jar 集成到libs下面
第二步:在build 文件 刪除 useLibrary ‘org.apache.http.legacy’ 這行代碼

混淆打包後沒有出現該問題,至於爲什麼不混淆下就沒問題,這個目前還不清楚

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章