因为 android 系统 framework 层也使用了org.apache.commons.codec 库,运行时调用的是 framework 层的库,没有加载我们添加的包,导致我们不能使用该库的方法。我们通常做RSA加密会用到Base64,从而导致冲突。
方案一
使用java自带base64 (java.util.Base64),远端也要同样使用java.util.Base64兼容安卓端
方案二
修改Apache code库的包名
工具:jarjar.jar
下载地址:https://www.jb51.net/softs/577289.html
jarjar使用教程:https://www.cnblogs.com/yejiurui/p/4283505.html
工具使用:
- cmd输入 查看jar包所有包名
java -jar jarjar.jar strings commons-codec-1.15.jar
-
新建一个rule.txt
-
rule.txt 内容
表示修改包名为org.apache.commons.android.*
具体意思看jarjar使用教程 -
cmd输入
java -jar jarjar.jar process rule.txt commons-codec-1.15.jar commons-codes-android-1.15.jar
开始生成新的包