Android开发知识分享

Android使用Apache Commons Codec库,提

2019-11-01  本文已影响0人  PlainDev

前言

最近Android项目中使用到了RSA加密🔐,用到了commons-codec包,在进行单元测试时没有问题,但是在运行在真机上时却越到了错误❌

错误如下

java.lang.NoSuchMethodError: No static method encodeBase64String([B)Ljava/lang/String

提示找不到该方法,于是查了下资料,发现了原因,原来在AndroidFramework层也引用了该库,运行时执行的是Framework层中引用的库,报错应该是Framework层引用的该库没有对应的该方法导致的。

解决方法

通过修改包名来解决,这里使用到的工具为jarjar.jar

下载地址为: https://code.google.com/p/jarjar/

然后下载要修改包名的jar包,这里使用commons-codec

下载地址为: http://commons.apache.org/proper/commons-codec/download_codec.cgi

修改名称为c1.jar,运行以下命令即可

java -jar jarjar.jar process rule.text source/c1.jar result/my.jar

这里的rule.text定义了修改规则,如下

rule org.apache.commons.codec.** org.apache.mybase64.@1

这句代表了将原包名org.apache.commons.codec修改为org.apache.mybase64

具体的规则定义可以参考这篇文章

最后在result文件夹可看到修改包名后的jar包

附录

所有的工具和替换好的jar包已放到github: https://github.com/plain-dev/modify-jar-package-name

上一篇下一篇

猜你喜欢

热点阅读