web-dev-qa-db-ja.com

注釈付きのクラスをProguardに保持する

私は例えばを使用するクラスの束を持っています。そのような@Singletonアノテーション

@Singleton
public class ImageCache

残しておきたいこと。そのアノテーションを持つすべてのクラスに適用されるように、proguard-keepステートメントを構成するにはどうすればよいですか。

ところで、コンテキストの観点から、AndroidでRoboguiceを使用するアプリにはこれが必要です。そのため、タグを追加しました。他の人を助けるかもしれません。

27
Manfred Moser

ProGuardは、ワイルドカードを使用したJavaのような構成に基づいています。完全修飾クラス名が必要です。これは機能するはずです:

-keep @com.google.inject.Singleton public class *
38
Eric Lafortune

最初に注釈を定義します

public @interface DoNotStrip {}

次に、これをproguard.cfgに配置します。

-keep,allowobfuscation @interface com.something.DoNotStrip

# Do not strip any method/class that is annotated with @DoNotStrip
-keep @com.something.DoNotStrip class *
-keepclassmembers class * {
    @com.something.DoNotStrip *;
}
6
Sahil Jain