通常、-keep を使用してクラスを除外すると、クラスが難読化されるのを防ぐことができます
ただし、収縮するのも防ぎます。
-keep で除外されたクラスを除くすべてのクラスを縮小するが、クラスの特定のサブセットのみを難読化する proguard-project.txt を定義することは可能ですか?
目的は、proguard を使用して Android 65k メソッドの制限を超えないようにすることです。また、APK 内でのみファースト パーティ コードを難読化します。
ありがとう
通常、-keep を使用してクラスを除外すると、クラスが難読化されるのを防ぐことができます
ただし、収縮するのも防ぎます。
-keep で除外されたクラスを除くすべてのクラスを縮小するが、クラスの特定のサブセットのみを難読化する proguard-project.txt を定義することは可能ですか?
目的は、proguard を使用して Android 65k メソッドの制限を超えないようにすることです。また、APK 内でのみファースト パーティ コードを難読化します。
ありがとう
はい、難読化 (および最適化) ステップにのみ適用されるオプションに修飾子allowshrinking
を追加できます。-keep
例えば:
-keep,allowshrinking class com.example.SomeClass
指定されたクラスは、縮小ステップで使用されていないように見える場合は削除される可能性がありますが、それ以外の場合、その名前は難読化ステップで保持されます。
エリックの答えは良いです、別の方法もあります。
まず、次の省略形があります。
-keep,allowshrinking
以下を使用できます。
-keepnames
逆を使用して行うこともできます。
-keepnames class !com.example.apackage.** {*;}
したがって、これにより、内部のすべてのクラスが難読化apackage
されますが、すべてのデッド コード ストリッピングが可能になります。
もう 1 つの注意点は、難読化をオンにすると、ファイル名や行番号などのすべてのメタ データが削除され、デバッガーやスタック トレースが破壊されることです。それらを機能させたい場合は、次の行を追加できます。
-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable