java android indexoutofboundsexception ioexception android-proguard

Problema con Android Proguard: sigue recibiendo el error "java.io.IOException: no se puede procesar la clase..." cuando se omite la ofuscaciĆ³n



indexoutofboundsexception android-proguard (2)

También tengo problemas con pro guard pero me resultó más útil seguir el código de git hub.

Build.grade

buildscript { repositories { mavenCentral() maven { url ''https://oss.sonatype.org/content/repositories/snapshots/'' } } dependencies { classpath ''com.android.tools.build:gradle:0.9.+'' classpath ''com.squareup.gradle:gradle-android-test-plugin:0.9.1-SNAPSHOT'' } } apply plugin: ''android'' apply plugin: ''android-test'' repositories { mavenCentral() maven { url ''https://oss.sonatype.org/content/repositories/snapshots/'' } } android { compileSdkVersion 19 buildToolsVersion "19.1.0" defaultConfig { minSdkVersion 9 targetSdkVersion 19 } signingConfigs { debug { storeFile file("debug.keystore") } release { storeFile file("project.keystore") storePassword "1234" keyAlias "Project" keyPassword "1234" } } buildTypes { release { debuggable false runProguard true signingConfig signingConfigs.release proguardFile getDefaultProguardFile(''proguard-android-optimize.txt'') } } productFlavors { defaultFlavor { proguardFile ''proguard-rules.txt'' } } sourceSets { main { java.srcDirs = [''src/main/java'', ''src-gen/main/java''] } instrumentTest.setRoot(''src/test'') } } dependencies { compile ''com.actionbarsherlock:actionbarsherlock:4.4.0@aar'' compile ''com.android.support:support-v4:19.1.+'' compile ''de.greenrobot:greendao:1.3.7'' compile ''com.google.android.gms:play-services:4.4.52'' testCompile ''junit:junit:4.10'' testCompile ''org.robolectric:robolectric:2.1.+'' testCompile ''com.squareup:fest-android:1.0.+'' instrumentTestCompile ''junit:junit:4.10'' instrumentTestCompile ''org.robolectric:robolectric:2.1.+'' instrumentTestCompile ''com.squareup:fest-android:1.0.+'' } task wrapper(type: Wrapper) { gradleVersion = ''1.8'' }

reglas de guardia pro

#################################################################################################### #################################################################################################### #################################################################################################### ######################################### PROGUARD ################################################# #################################################################################################### #################################################################################################### #################################################################################################### # This is a configuration file for ProGuard. # http://proguard.sourceforge.net/index.html#manual/usage.html -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -verbose # Optimization is turned off by default. Dex does not like code run # through the ProGuard optimize and preverify steps (and performs some # of these optimizations on its own). #-dontoptimize #-dontpreverify # If you want to enable optimization, you should include the # following: -optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/* -optimizationpasses 5 -allowaccessmodification # # Note that you cannot just include these flags in your own # configuration file; if you are including this file, optimization # will be turned off. You''ll need to either edit this file, or # duplicate the contents of this file and remove the include of this # file from your project''s proguard.config path property. -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.BackupAgent -keep public class * extends android.preference.Preference -keep public class * extends android.support.v4.app.Fragment -keep public class * extends android.support.v4.app.DialogFragment -keep public class * extends com.actionbarsherlock.app.SherlockListFragment -keep public class * extends com.actionbarsherlock.app.SherlockFragment -keep public class * extends com.actionbarsherlock.app.SherlockFragmentActivity -keep public class * extends android.app.Fragment -keep public class com.android.vending.licensing.ILicensingService # For native methods, see http://proguard.sourceforge.net/manual/examples.html#native -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*(...); } -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); } # For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations -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 **.R$* { public static <fields>; } -keep class android.support.v4.app.** { *; } -keep interface android.support.v4.app.** { *; } -keep class com.actionbarsherlock.** { *; } -keep interface com.actionbarsherlock.** { *; } # The support library contains references to newer platform versions. # Don''t warn about those in case this app is linking against an older # platform version. We know about them, and they are safe. -dontwarn android.support.** -dontwarn com.google.ads.**

Estoy creando una aplicación de Android con programa en Android Studio y mi proyecto tiene una biblioteca (na.jar) que me gustaría omitir la ofuscación y la verificación previa porque algunas clases de na.jar me están dando errores durante la compilación. Así que en mi archivo de configuración de programa, tengo las siguientes opciones

-dontpreverify # com.na, org.json are packages in na.jar, don''t obfuscate the code in these packages -keep class com.na.** { *; } -keep interface com.na.** { *; } -keep class org.json.** { *; } -keep interface org.json.** { *; }

Sin embargo, todavía estoy recibiendo los siguientes errores relacionados con las clases defectuosas en na.jar durante el proceso de compilación.

Caused by: java.io.IOException: Can''t read [C:/StudioProjects/PBActivity/pBActivity/libs/na.jar(;;;;;;!META-INF/MANIFEST.MF)] (Can''t process class [com/na/util/BinConverter.class] (256)) at proguard.InputReader.readInput(InputReader.java:188) at proguard.InputReader.readInput(InputReader.java:158) at proguard.InputReader.readInput(InputReader.java:136) at proguard.InputReader.execute(InputReader.java:66) at proguard.ProGuard.readInput(ProGuard.java:207) at proguard.ProGuard.execute(ProGuard.java:81) at proguard.gradle.ProGuardTask.proguard(ProGuardTask.java:1074) at com.android.build.gradle.tasks.AndroidProGuardTask.proguard(AndroidProGuardTask.java:87) at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:63) ... 62 more Caused by: java.io.IOException: Can''t process class [com/na/util/BinConverter.class] (256) at proguard.io.ClassReader.read(ClassReader.java:112) at proguard.io.FilteredDataEntryReader.read(FilteredDataEntryReader.java:87) at proguard.io.FilteredDataEntryReader.read(FilteredDataEntryReader.java:87) at proguard.io.FilteredDataEntryReader.read(FilteredDataEntryReader.java:87) at proguard.io.JarReader.read(JarReader.java:65) at proguard.io.DirectoryPump.readFiles(DirectoryPump.java:65) at proguard.io.DirectoryPump.pumpDataEntries(DirectoryPump.java:53) at proguard.InputReader.readInput(InputReader.java:184) ... 70 more Caused by: java.lang.ArrayIndexOutOfBoundsException: 256 at proguard.classfile.ProgramClass.getString(ProgramClass.java:116) at proguard.classfile.io.ProgramClassReader.createAttribute(ProgramClassReader.java:990) at proguard.classfile.io.ProgramClassReader.visitProgramMethod(ProgramClassReader.java:206) at proguard.classfile.io.ProgramClassReader.visitProgramClass(ProgramClassReader.java:149) at proguard.classfile.ProgramClass.accept(ProgramClass.java:358) at proguard.io.ClassReader.read(ClassReader.java:91) ... 77 more

Entonces, ¿proguard sigue leyendo las clases y los frascos incluso con la ofuscación omitida? Soy nuevo en el uso de proguard para construir aplicaciones de Android.

Actualización # 1

-dontpreverify -dontoptimize -dontshrink -keep class com.na.** { *; } -keep interface com.na.** { *; } -keep class org.json.** { *; } -keep interface org.json.** { *; }


prueba esto:

-dontwarn com.na.** -keep class com.na.** { *; } -keepattributes Signature -keepattributes Exceptions