android - apache中的StringUtils.rightPad()在android中抛出NoSuchMethodError

标签 android gradle apache-commons android-build

我已经包含了

在应用程序中

compile 'org.apache.commons:commons-lang3:3.0' 

在 progaurd 中我包含了

-keep class org.apache.commons.lang3.StringUtils*

但是当应用程序尝试访问 StringUtils.rightPad() 时。它抛出一个异常说

java.lang.NoSuchMethodError: org.apache.commons.lang3.StringUtils.a

相关代码

 public static String getSignedData(String data) {
        int blockSize = 64;
        byte[] key = StringUtils.rightPad(ApplicationConst.getCheckoutAccessKey(), blockSize, (char) 0x00).getBytes();
        byte[] iPad = StringUtils.repeat((char) 0x36, blockSize).getBytes();
        byte[] oPad = StringUtils.repeat((char) 0x5c, blockSize).getBytes();
        byte[] stage1 = hashMessage(concatenate(xor(key, iPad), data.getBytes()));
        byte[] stageFinal = hashMessage(concatenate(xor(key, oPad), stage1));
        return bytesToHex(stageFinal);
 }

最佳答案

修改您的 proguard 脚本并添加以下行。

-keep class org.apache.commons.lang3.StringUtils { *; }
-keep public class org.apache.commons.lang3.StringUtils { public protected static *; }
-keepclassmembers public class org.apache.commons.lang3.StringUtils { *; }
-keepnames public class org.apache.commons.lang3.StringUtils { *; }

关于android - apache中的StringUtils.rightPad()在android中抛出NoSuchMethodError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36880962/

相关文章:

java - 如何在弹出的expo项目中安装react-navigation?

java - 使用 JDBC 将 android 与数据库连接

java - 如何使用 xml 文件中的数据填充 SQLite 数据库?

java - 如何将开关传递给我的 Android 应用程序以控制其在开发过程中的行为?

maven - 无法使用 gradle 命令跳过 ssl 验证,但可以在 maven 中执行此操作

android - 在 Android 中使用 Apache Commons lib 时的奇怪行为

java - 通过 Apache HTTP 连接访问网站时连接重置

android - 我的 Android 相机 Uri 返回一个空值,但三星修复程序已经到位,帮助?

import - LibGDX 依赖项

java - 替代 Apache Commons DbUtils 的轻量级 JDBC 帮助程序库