Menu

#469 ArrayIndexOutOfBoundException

v4.9
closed-invalid
5
2014-10-08
2013-03-26
No

I am getting ArrayIndexOutOfBoundException while obfuscating android app. here is the stack trace:

[2013-03-26 12:18:28 - PGInAppAAM] Proguard returned with error code 1. See console
[2013-03-26 12:18:28 - PGInAppAAM] java.io.IOException: Can't read [/Users/ken/Documents/workspace/PGInAppAAM/libs/BillingClient_v2.0.jar] (Can't process class [com/quixotic/aambilling/internal/Base64.class] (65280))
[2013-03-26 12:18:28 - PGInAppAAM] at proguard.InputReader.readInput(InputReader.java:230)
[2013-03-26 12:18:28 - PGInAppAAM] at proguard.InputReader.readInput(InputReader.java:200)
[2013-03-26 12:18:28 - PGInAppAAM] at proguard.InputReader.readInput(InputReader.java:178)
[2013-03-26 12:18:28 - PGInAppAAM] at proguard.InputReader.execute(InputReader.java:78)
[2013-03-26 12:18:28 - PGInAppAAM] at proguard.ProGuard.readInput(ProGuard.java:197)
[2013-03-26 12:18:28 - PGInAppAAM] at proguard.ProGuard.execute(ProGuard.java:79)
[2013-03-26 12:18:28 - PGInAppAAM] at proguard.ProGuard.main(ProGuard.java:484)
[2013-03-26 12:18:28 - PGInAppAAM] Caused by: java.io.IOException: Can't process class [com/quixotic/aambilling/internal/Base64.class] (65280)
[2013-03-26 12:18:28 - PGInAppAAM] at proguard.io.ClassReader.read(ClassReader.java:112)
[2013-03-26 12:18:28 - PGInAppAAM] at proguard.io.FilteredDataEntryReader.read(FilteredDataEntryReader.java:87)
[2013-03-26 12:18:28 - PGInAppAAM] at proguard.io.JarReader.read(JarReader.java:65)
[2013-03-26 12:18:28 - PGInAppAAM] at proguard.io.DirectoryPump.readFiles(DirectoryPump.java:65)
[2013-03-26 12:18:28 - PGInAppAAM] at proguard.io.DirectoryPump.pumpDataEntries(DirectoryPump.java:53)
[2013-03-26 12:18:28 - PGInAppAAM] at proguard.InputReader.readInput(InputReader.java:226)
[2013-03-26 12:18:28 - PGInAppAAM] ... 6 more
[2013-03-26 12:18:28 - PGInAppAAM] Caused by: java.lang.ArrayIndexOutOfBoundsException: 65280
[2013-03-26 12:18:28 - PGInAppAAM] at proguard.classfile.ProgramClass.getString(ProgramClass.java:116)
[2013-03-26 12:18:28 - PGInAppAAM] at proguard.classfile.io.ProgramClassReader.createAttribute(ProgramClassReader.java:828)
[2013-03-26 12:18:28 - PGInAppAAM] at proguard.classfile.io.ProgramClassReader.visitProgramMethod(ProgramClassReader.java:199)
[2013-03-26 12:18:28 - PGInAppAAM] at proguard.classfile.io.ProgramClassReader.visitProgramClass(ProgramClassReader.java:142)
[2013-03-26 12:18:28 - PGInAppAAM] at proguard.classfile.ProgramClass.accept(ProgramClass.java:346)
[2013-03-26 12:18:28 - PGInAppAAM] at proguard.io.ClassReader.read(ClassReader.java:91)
[2013-03-26 12:18:28 - PGInAppAAM] ... 11 more

Here is the proguard.cfg :

-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/,!class/merging/
-keepattributes SourceFile,LineNumberTable
-keepattributes Signature,Annotation

-dontwarn org.xmlpull.v1.**

-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService

-keepclasseswithmembernames class * {
native <methods>;
}

-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet);
}

-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}

-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}

-keepclassmembers enum * {
public static [] values();
public static
valueOf(java.lang.String);
}

-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}

-keepclassmembers class * implements android.os.Parcelable {
static android.os.Parcelable$Creator CREATOR;
}

-keepclassmembers class *.R$ {
public static <fields>;
}

-keepclasseswithmembernames class * {
native <methods>;
}

-keep public class * extends android.view.View {
public <init>(android.content.Context);
public <init>(android.content.Context, android.util.AttributeSet);
public <init>(android.content.Context, android.util.AttributeSet, int);
public void set*(...);
}

-keep class org.acra.ACRA {
*;
}

-keep class org.acra.ReportingInteractionMode {
*;
}

-keepclassmembers class org.acra.ReportField {
public static <fields>;
}

-keep public class org.acra.ErrorReporter{
public void addCustomData(java.lang.String,java.lang.String);
}

-keep public class org.acra.ErrorReporter{
public org.acra.ErrorReporter$ReportsSenderWorker handleSilentException(java.lang.Throwable);
}

Discussion

  • Eric Lafortune

    Eric Lafortune - 2013-03-26

    Thanks for the report. Is it possible that the mentioned class file is corrupt? Can you view it with javap:

    javap -c -private -verbose -classpath PGInAppAAM/libs/BillingClient_v2.0.jar com.quixotic.aambilling.internal.Base64
    

    If that works fine, is it possible to attach or mail me the class file com/quixotic/aambilling/internal/Base64.class or the entire jar?

     
    • Muhammad Saqib

      Muhammad Saqib - 2013-03-26

      jar is attached

       

      Last edit: Muhammad Saqib 2013-03-26
  • Muhammad Saqib

    Muhammad Saqib - 2013-03-26

    thanks for your help. I think you are right. I am getting the following error with javap

    java.io.EOFException
    at java.io.DataInputStream.readFully(DataInputStream.java:180)
    at java.io.DataInputStream.readFully(DataInputStream.java:152)
    at sun.tools.javap.AttrData.read(AttrData.java:36)
    at sun.tools.javap.MethodData.read(MethodData.java:89)
    at sun.tools.javap.ClassData.readMethods(ClassData.java:206)
    at sun.tools.javap.ClassData.read(ClassData.java:99)
    at sun.tools.javap.ClassData.<init>(ClassData.java:52)
    at sun.tools.javap.JavapPrinter.<init>(JavapPrinter.java:30)
    at sun.tools.javap.Main.displayResults(Main.java:201)
    at sun.tools.javap.Main.perform(Main.java:61)
    at sun.tools.javap.Main.entry(Main.java:49)
    at sun.tools.javap.Main.main(Main.java:34)

    but it does decompile successfully with JD-GUI

     

    Last edit: Muhammad Saqib 2013-03-26
  • Eric Lafortune

    Eric Lafortune - 2013-03-27

    The class file is corrupt; there's not much I can do about it. You should check with its creators if there is a correct version.

     
  • Eric Lafortune

    Eric Lafortune - 2013-03-27
    • status: open --> closed-invalid
     

Log in to post a comment.