2016-10-26 10 views
0
アンドロイドSDKのデフォルトのProGuardの設定では1行があり

なぜデフォルトProGuardの設定は維持*注釈*

-keepattributes *Annotation* 

ProGuardのマニュアルによると、この行は等しくへ:

-keepattributes RuntimeVisibleAnnotations,RuntimeInvisibleAnnotations,RuntimeVisibleParameterAnnotations,RuntimeInvisibleParameterAnnotations,RuntimeVisibleTypeAnnotations,RuntimeInvisibleTypeAnnotations,AnnotationDefault 
は、私の意見で

は、おそらく以下の構成で十分です:

-keepattributes RuntimeVisibleAnnotations,RuntimeVisibleParameterAnnotations,RuntimeVisibleTypeAnnotations,AnnotationDefault 

は、私が行方不明があります何か?推奨設定ですべてのことを維持するのはなぜですか?

答えて

2

いいえ、あなたの観測が正しい、次のような構成では、より正確な私見になります:

-keepattributes RuntimeVisible*Annotation*,AnnotationDefault 

ほとんどの人は、おそらくランタイム目に見えるものと見えない注釈間の微妙な違いを気にしないが、具体的なはありません実行時不可視注釈を保持する理由。

編集:上記はAndroidアプリケーションのみに適用されます。 Androidライブラリを構築する場合は、-keepattributes * Annotation *に固執する必要があります。

btw。 DexGuard(ProGuardの商用バージョン)は、私が上で提案した更新された構成を使用します。

+0

**はAndroidアプリケーションのみに適用されます。 Androidライブラリを構築する場合は、-keepattributes * Annotation \ ***に固執する必要があります。これを指摘してくれてありがとう! – Shaw

関連する問題