Android中使用commons-codec-1.6.jar 進行Base64編解碼出現的問題
編碼時出現異常:
java.lang.NoSuchMethodError: No static method encodeBase64String([B)Ljava/lang/String; in class Lorg/apache/commons/codec/binary/Base64; or its super classes (declaration of ‘org.apache.commons.codec.binary.Base64‘ appears in /system/framework/org.apache.http.legacy.boot.jar)
解碼問題:
java.lang.NoSuchMethodError: No static method decodeBase64(Ljava/lang/String;)[B in class Lorg/apache/commons/codec/binary/Base64; or its super classes (declaration of ‘org.apache.commons.codec.binary.Base64‘ appears in /system/framework/org.apache.http.legacy.boot.jar)
通過分析日誌,發現由於Android系統的Framework層也用了apache的commons-codec這個包,和我在lib中引入的包沖突了。。。
解決方式:從 http://archive.apache.org/dist/commons/codec/binaries/ 下載於後臺人員版本相同的版本的包的源碼包,直接把源碼直接拿來用。別忘了改了包名!
費了半天勁重新導包,發現還是不能用,Language.java拋出來的問題,Application啟動時候找到了我們的這個Language而沒有用系統的,就出了這個操蛋的問題。我們只要編解碼功能,所以直接把這個包刪掉就好了。
最後完美運行!開森。我的目錄結構為:
=========================》
上面如果訪問不了,可以訪問 commons-codec-1.6-bin.zip
Android中使用commons-codec-1.6.jar 進行Base64編解碼出現的問題