Android Proguard问题 - 跳过模糊处理时仍然出现"java.io.IOException:无法处理类..."错误

Nic*_*cky 16 java android ioexception indexoutofboundsexception android-proguard

我正在使用Android Studio中的proguard构建一个Android应用程序,我的项目有一个库jar(na.jar),我想跳过混淆和预验证,因为来自na.jar的一些类在构建过程中给了我错误.所以在我的proguard配置文件中,我有以下选项

-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.** { *; } 
Run Code Online (Sandbox Code Playgroud)

但是,在构建过程中,我仍然遇到与na.jar中的错误类相关的以下错误.

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
Run Code Online (Sandbox Code Playgroud)

那么即使跳过混淆,proguard仍会读取类和jar吗?我是使用proguard构建Android应用程序的新手.

更新#1

-dontpreverify
-dontoptimize
-dontshrink

-keep class com.na.** { *; }
-keep interface com.na.** { *; }
-keep class org.json.** { *; }
-keep interface org.json.** { *; }
Run Code Online (Sandbox Code Playgroud)

mas*_*ali 0

尝试这个:

-dontwarn com.na.**
-keep class com.na.** { *; }
-keepattributes Signature
-keepattributes Exceptions
Run Code Online (Sandbox Code Playgroud)