私が設定しました:
-keep ,allowoptimization,allowobfuscation,allowshrinking public class org.jf.dexlib2.dexbacked.** {
*;
}
それでも警告が表示されます:
Note: the configuration keeps the entry point 'com.trusteer.trf.dex_parser { int get_strings_count(org.jf.dexlib2.dexbacked.DexBackedDexFile); }', but not the descriptor class 'org.jf.dexlib2.dexbacked.DexBackedDexFile'
私はproguardバージョン4.7を使用しています(Android SDK)
私は何をすべきか?
特定のメソッドvoid foo(Bar bar);
を保持するが、記述子クラスBar
を難読化するようにProguardに指示しました。
これは、難読化によって署名が変更されるため、外部ソースからメソッドを呼び出す場合にのみ問題になります(Proguardを使用してライブラリを難読化し、そのライブラリを別のアプリで使用する場合)。
次の選択肢があります。
Bar
も保持するようにProguardを構成します。
使用 -dontnote
このようなメモを印刷しないようにProguardに指示するディレクティブ。
注:構成は、エントリポイント「...」を保持しますが、記述子クラス「...」は保持しませんこれは、メソッドの記述子の引数型または戻り値型です。その後、クラスを保持することもできます。そうでない場合、ProGuardは名前を難読化し、メソッドの署名を変更します。その場合、メソッドはエントリポイントとして見つけることができなくなる可能性があります。パブリックAPIの一部である場合。 -keepオプション修飾子includeescriptorclasses(-keep、includedescriptorclasses ...)を使用すると、このような記述子クラスを自動的に保持できます。 -dontnoteオプションを指定すると、これらのメモをオフにできます。
この問題を修正するには、「proguard-rules.pro」ファイルにこの行を追加します。
-ignorewarnings
docuemnts から:
allowhrinking -keepオプションで指定されたエントリポイントは、別の方法で保存する必要がある場合でも、縮小できることを指定します。つまり、エントリポイントは縮小ステップで削除される場合がありますが、結局必要な場合は、最適化または難読化されない場合があります
したがって、allowshrinking
修飾子を削除する必要があるようです。
私の場合、build.gradleに追加するとこの問題が発生します
minifyEnable true
公式の指示: https://flutter.dev/docs/deployment/Android
バグ https://github.com/flutter/flutter/issues/1925
サンプルproguard-rules.proファイル:
#Flutter Wrapper
-ignorewarnings
-keep class io.flutter.app.** { *; }
-keep class io.flutter.plugin.** { *; }
-keep class io.flutter.util.** { *; }
-keep class io.flutter.view.** { *; }
-keep class io.flutter.** { *; }
-keep class io.flutter.plugins.** { *; }