Androidスタジオでproguardを使用してアンドロイドアプリを構築していて、プロジェクトにライブラリjar(na .jar)は、na.jarのいくつかのクラスがビルド中にエラーを出すため、難読化と事前確認を省略したいと考えています。私はまだ、ビルドプロセス中にna.jar内の障害のあるクラスに関連する次のエラーを取得していますしかし、だから私のProGuardの設定ファイルでは、私は次のオプションAndroid Proguardの問題 - 難読化をスキップすると "java.io.IOException:Can not process class ..."エラーが発生する
-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.** { *; }
を持っています。
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
プロフアードは、難読化をスキップしてもクラスとjarを読み込みますか?私はproguardを使ってAndroidアプリを構築するのが初めてです。
更新#1
-dontpreverify
-dontoptimize
-dontshrink
-keep class com.na.** { *; }
-keep interface com.na.** { *; }
-keep class org.json.** { *; }
-keep interface org.json.** { *; }
はい、難読化は、ProGuardのが何をするかの一部でしかありません - それは残りの部分をやっていきます未使用コードの削除などのライブラリ –
Proguardはライブラリジャー(na.jar)の読み取り/処理をスキップできますか? – Nicky
最適化を無効にするには、-optimizationsを使用してフィルタを追加します(これらの型/パッケージを最適化しないようにするには、!の前にregexを指定します)。私はこのリストがあなたの "keep"リストと同じであると推測しています。 –