4

通常、-keep を使用してクラスを除外すると、クラスが難読化されるのを防ぐことができます

ただし、収縮するのも防ぎます。

-keep で除外されたクラスを除くすべてのクラスを縮小するが、クラスの特定のサブセットのみを難読化する proguard-project.txt を定義することは可能ですか?

目的は、proguard を使用して Android 65k メソッドの制限を超えないようにすることです。また、APK 内でのみファースト パーティ コードを難読化します。

ありがとう

4

2 に答える 2

5

はい、難読化 (および最適化) ステップにのみ適用されるオプションに修飾子allowshrinkingを追加できます。-keep例えば:

-keep,allowshrinking class com.example.SomeClass

指定されたクラスは、縮小ステップで使用されていないように見える場合は削除される可能性がありますが、それ以外の場合、その名前は難読化ステップで保持されます。

于 2014-07-20T23:26:24.240 に答える
1

エリックの答えは良いです、別の方法もあります。

まず、次の省略形があります。

-keep,allowshrinking

以下を使用できます。

-keepnames

逆を使用して行うこともできます。

-keepnames class !com.example.apackage.** {*;}

したがって、これにより、内部のすべてのクラスが難読化apackageされますが、すべてのデッド コード ストリッピングが可能になります。

もう 1 つの注意点は、難読化をオンにすると、ファイル名や行番号などのすべてのメタ データが削除され、デバッガーやスタック トレースが破壊されることです。それらを機能させたい場合は、次の行を追加できます。

-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable
于 2015-06-12T20:41:20.490 に答える