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

StringUtils.rightPad () in apache throws NoSuchMethodError in android

我已经包含了

在应用程序中 gradle

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 { *; }