Chromium Code Reviews| Index: base/base_proguard_config.flags |
| diff --git a/base/base_proguard_config.flags b/base/base_proguard_config.flags |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..8301893ec0e6c7f1145f96f52b62565f387bc497 |
| --- /dev/null |
| +++ b/base/base_proguard_config.flags |
| @@ -0,0 +1,70 @@ |
| +# Keep line number information, useful for stack traces. |
|
Yaron
2016/07/18 13:41:21
put this in base/android?
smaier
2016/07/18 17:28:50
Done.
|
| +-keepattributes SourceFile,LineNumberTable |
| + |
| +# Keep all runtime visible annotations |
| +-keepattributes RuntimeVisibleAnnotations |
| + |
| +# Keep the annotations, because if we don't, the ProGuard rules that use them |
| +# will not be respected. These classes then show up in our final dex, which we |
| +# do not want - see crbug.com/628226. |
| +-keep @interface android.webkit.JavascriptInterface |
| +-keep @interface org.chromium.base.annotations.AccessedByNative |
| +-keep @interface org.chromium.base.annotations.CalledByNative |
| +-keep @interface org.chromium.base.annotations.CalledByNativeUnchecked |
| +-keep @interface org.chromium.base.annotations.RemovableInRelease |
| +-keep @interface org.chromium.base.annotations.UsedByReflection |
| + |
| +# Keeps for class level annotations. |
| +-keep @org.chromium.base.annotations.UsedByReflection class * |
| + |
| +# Keeps for method level annotations. |
| +-keepclasseswithmembers class * { |
| + @android.webkit.JavascriptInterface <methods>; |
| +} |
| +-keepclasseswithmembers class * { |
| + @org.chromium.base.annotations.AccessedByNative <fields>; |
| +} |
| +-keepclasseswithmembers,includedescriptorclasses class * { |
| + @org.chromium.base.annotations.CalledByNative <methods>; |
| +} |
| +-keepclasseswithmembers,includedescriptorclasses class * { |
| + @org.chromium.base.annotations.CalledByNativeUnchecked <methods>; |
| +} |
| +-keepclasseswithmembers class * { |
| + @org.chromium.base.annotations.UsedByReflection <methods>; |
| +} |
| +-keepclasseswithmembers,includedescriptorclasses class org.chromium.** { |
| + native <methods>; |
| +} |
| + |
| +# Remove methods annotated with this if their return value is unused |
| +-assumenosideeffects class * { |
| + @org.chromium.base.annotations.RemovableInRelease <methods>; |
| +} |
| + |
| +# Allows Proguard freedom in removing these log related calls. We ask for debug |
| +# and verbose logs to be stripped out in base.Log, so we are just ensuring we |
| +# get rid of all other debug/verbose logs. |
| +-assumenosideeffects class android.util.Log { |
| + static *** d(...); |
| + static *** v(...); |
| + static *** isLoggable(...); |
| +} |
| + |
| +# Class merging provides negligible .dex size reduction and method count |
| +# reduction (about 0.3% improvement on method count, and 0.1% savings on size), |
| +# and it messes up stack traces if the classes are optimized. Thus, it is in our |
| +# best interests to turn it off. See crbug.com/620323 |
| +-optimizations !class/merging/* |
| + |
| +# Allowing Proguard to change modifiers. This change shrinks the .dex size by |
| +# ~1.1%, and reduces the method count by ~4.3%. |
| +-allowaccessmodification |
| + |
| +# Keep all enum values and valueOf methods. See |
| +# http://proguard.sourceforge.net/index.html#manual/examples.html |
| +# for the reason for this. Also, see http://crbug.com/248037. |
| +-keepclassmembers enum * { |
| + public static **[] values(); |
| + public static ** valueOf(java.lang.String); |
| +} |