Menu

[Proguard,cfg] I can't make proguard ofuscate

Help
pttraffic
2015-02-04
2015-02-12
  • pttraffic

    pttraffic - 2015-02-04

    Hi there, I'm having issues ofuscate a package since I add an external lib.

    I already tried to make this:

    -keep public class * extends android.content.pm.IPackageStatsObserver
    -keep public class * implements android.content.pm.IPackageStatsObserver
    -keepclassmembers class * {
        public static android.content.pm.IPackageStatsObserver asInterface(android.os.IBinder);
    
    }
    
    and
    
    -keep public class com.(namespace).corelib.\*\* {*;}
    -libraryjars libs/corelib.jar
    -dontwarn com.(namespace).corelib.\*\*
    

    where (namespace) it's corelib domain.

    But this compilation problem remains:

    [proguard] Reading program jar [/mnt/data/jenkins/workspace/xxx/libs/corelib.jar]

    BUILD FAILED
    /home/jenkins/android-sdk-base/tools/ant/build.xml:875: Can't read [/mnt/data/jenkins/workspace/xxx/libs/corelib.jar] (Can't process class [android/content/pm/IPackageStatsObserver$Stub.class] (64000))

    Thanks for any possible help

     

    Last edit: pttraffic 2015-02-04
  • pttraffic

    pttraffic - 2015-02-09

    -libraryjars /libs/corelib.jar

    This line is completely ignored.

    Error:ProGuard: [xxx] java.io.IOException: Can't read [/Users/xxxx/Documents/xxxx/clientes/xxx/libs/corelib.jar] (Can't process class [android/content/pm/IPackageStatsObserver$Stub.class] (64000))
    Error:ProGuard: [xxx] at proguard.InputReader.readInput(InputReader.java:230)
    Error:ProGuard: [xxx] at proguard.InputReader.readInput(InputReader.java:200)
    Error:ProGuard: [xxx] at proguard.InputReader.readInput(InputReader.java:178)
    Error:ProGuard: [xxx] at proguard.InputReader.execute(InputReader.java:78)
    Error:ProGuard: [xxx] at proguard.ProGuard.readInput(ProGuard.java:196)
    Error:ProGuard: [xxx] at proguard.ProGuard.execute(ProGuard.java:78)
    Error:ProGuard: [xxx] at proguard.ProGuard.main(ProGuard.java:492)
    Error:ProGuard: [xxx] Caused by: java.io.IOException: Can't process class [android/content/pm/IPackageStatsObserver$Stub.class] (64000)
    Error:ProGuard: [xxx] at proguard.io.ClassReader.read(ClassReader.java:112)
    Error:ProGuard: [xxx] at proguard.io.FilteredDataEntryReader.read(FilteredDataEntryReader.java:87)
    Error:ProGuard: [xxx] at proguard.io.JarReader.read(JarReader.java:65)
    Error:ProGuard: [xxx] at proguard.io.DirectoryPump.readFiles(DirectoryPump.java:65)
    Error:ProGuard: [xxx] at proguard.io.DirectoryPump.pumpDataEntries(DirectoryPump.java:53)
    Error:ProGuard: [xxx] at proguard.InputReader.readInput(InputReader.java:226)
    Error:ProGuard: [xxx] ... 6 more
    Error:ProGuard: [xxx] Caused by: java.lang.ArrayIndexOutOfBoundsException: 64000
    Error:ProGuard: [xxx] at proguard.classfile.ProgramClass.getString(ProgramClass.java:116)
    Error:ProGuard: [xxx] at proguard.classfile.io.ProgramClassReader.createAttribute(ProgramClassReader.java:828)
    Error:ProGuard: [xxx] at proguard.classfile.io.ProgramClassReader.visitProgramMethod(ProgramClassReader.java:199)
    Error:ProGuard: [xxx] at proguard.classfile.io.ProgramClassReader.visitProgramClass(ProgramClassReader.java:142)
    Error:ProGuard: [xxx] at proguard.classfile.ProgramClass.accept(ProgramClass.java:346)
    Error:ProGuard: [xxx] at proguard.io.ClassReader.read(ClassReader.java:91)
    Error:ProGuard: [xxx] ... 11 more

     
  • pttraffic

    pttraffic - 2015-02-09

    I just want to ignore this external lib, there is anyway that would do that?
    using keep, same crash, using libraryjars same crash, what else can I do?

     
  • pttraffic

    pttraffic - 2015-02-09

    javap -c -private -verbose -classpath corelib.jar android.content.pm.IPackageStatsObserver
    Classfile jar:file:/Users/teixeiras/Downloads/corelib.jar!/android/content/pm/IPackageStatsObserver.class
    Last modified Jul 21, 2014; size 337 bytes
    MD5 checksum 9e129818f7aebdc5e81510db14424713
    Compiled from "SourceFile"
    public interface android.content.pm.IPackageStatsObserver extends android.os.IInterface
    InnerClasses:
    public static abstract #10= #2 of #1; //Stub=class android/content/pm/IPackageStatsObserver$Stub of class android/content/pm/IPackageStatsObserver
    SourceFile: "SourceFile"
    minor version: 0
    major version: 51
    flags: ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT
    Constant pool:
    #1 = Class #12 // android/content/pm/IPackageStatsObserver
    #2 = Class #13 // android/content/pm/IPackageStatsObserver$Stub
    #3 = Class #14 // android/os/IInterface
    #4 = Class #15 // android/os/RemoteException
    #5 = Class #16 // java/lang/Object
    #6 = Utf8 (Landroid/content/pm/PackageStats;)V
    #7 = Utf8 Exceptions
    #8 = Utf8 InnerClasses
    #9 = Utf8 SourceFile
    #10 = Utf8 Stub
    #11 = Utf8 a
    #12 = Utf8 android/content/pm/IPackageStatsObserver
    #13 = Utf8 android/content/pm/IPackageStatsObserver$Stub
    #14 = Utf8 android/os/IInterface
    #15 = Utf8 android/os/RemoteException
    #16 = Utf8 java/lang/Object
    {
    public abstract void a(android.content.pm.PackageStats) throws android.os.RemoteException;
    flags: ACC_PUBLIC, ACC_ABSTRACT
    Exceptions:
    throws android.os.RemoteException
    }

     
  • Eric Lafortune

    Eric Lafortune - 2015-02-12

    If you are building an Android application with one of the standard Android build systems, you must not specify any -injars, -outjars, or -libraryjars options. The build system already specifies these for you.

    Moreover, some class file in your corelib.jar appears to be corrupt. You can check if rebuilding it helps or if some tool is corrupting it.