2 votes

StringUtils.rightPad () dans apache lance NoSuchMethodError dans Android

J'ai inclus

dans l'application gradle

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

dans le programme, j'ai inclus

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

mais lorsque l'application essaie d'accéder à StringUtils.rightPad(), elle lance une exception en disant

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

Code associé

 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);
 }

1voto

Rajen Raiyarela Points 3490

Modifiez votre proguard script et ajoutez les lignes ci-dessous.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X