blob: 6dbee84c1de77923b3fd389a736943fbe8f57ec8 [file] [log] [blame]
Ying Wang7311a342013-08-21 18:32:49 -07001# We have moved -dontobfuscate and -dontoptimize to the makefiles.
Ying Wang3b2bdf12010-02-01 09:51:23 -08002# dex does not like code run through proguard optimize and preverify steps.
Ying Wang7311a342013-08-21 18:32:49 -07003# -dontoptimize
Ying Wang3b2bdf12010-02-01 09:51:23 -08004-dontpreverify
5
6# Don't obfuscate. We only need dead code striping.
Ying Wang7311a342013-08-21 18:32:49 -07007# -dontobfuscate
Ying Wang3b2bdf12010-02-01 09:51:23 -08008
9# Add this flag in your package's own configuration if it's needed.
10#-flattenpackagehierarchy
11
Jared Dukeda0d73e2023-02-01 10:27:04 -080012# Keep classes and members with the platform-defined @VisibleForTesting annotation.
13-keep @com.android.internal.annotations.VisibleForTesting class *
14-keepclassmembers class * {
15 @com.android.internal.annotations.VisibleForTesting *;
16}
17
18# Keep classes and members with non-platform @VisibleForTesting annotations, but
19# only within platform-defined packages. This avoids keeping external, library-specific
20# test code that isn't actually needed for platform testing.
Jared Duke97a99032022-08-02 16:05:03 -070021# TODO(b/239961360): Migrate away from androidx.annotation.VisibleForTesting
22# and com.google.common.annotations.VisibleForTesting use in platform code.
Jared Dukeda0d73e2023-02-01 10:27:04 -080023-keep @**.VisibleForTesting class android.**,com.android.**,com.google.android.**
24-keepclassmembers class android.**,com.android.**,com.google.android.** {
Jared Duke97a99032022-08-02 16:05:03 -070025 @**.VisibleForTesting *;
Ying Wang38cdd442013-05-30 10:45:46 -070026}
Ying Wang3b2bdf12010-02-01 09:51:23 -080027
Jared Duke7d0c90b2022-05-09 18:09:01 -070028# Keep rule for members that are needed solely to keep alive downstream weak
29# references, and could otherwise be removed after tree shaking optimizations.
30-keepclassmembers,allowaccessmodification,allowobfuscation,allowshrinking class * {
31 @com.android.internal.annotations.KeepForWeakReference <fields>;
32}
33
Jared Duke4bd749b2021-12-14 15:28:33 -080034# Understand the common @Keep annotation from various Android packages:
35# * android.support.annotation
36# * androidx.annotation
37# * com.android.internal.annotations
38-keep class **android**.annotation*.Keep
Colin Cross38b48de2019-03-26 09:48:28 -070039
Jared Duke4bd749b2021-12-14 15:28:33 -080040-keep @**android**.annotation*.Keep class * { *; }
Colin Cross38b48de2019-03-26 09:48:28 -070041
42-keepclasseswithmembers class * {
Jared Duke4bd749b2021-12-14 15:28:33 -080043 @**android**.annotation*.Keep <methods>;
Colin Cross38b48de2019-03-26 09:48:28 -070044}
45
46-keepclasseswithmembers class * {
Jared Duke4bd749b2021-12-14 15:28:33 -080047 @**android**.annotation*.Keep <fields>;
Colin Cross38b48de2019-03-26 09:48:28 -070048}
49
50-keepclasseswithmembers class * {
Jared Duke4bd749b2021-12-14 15:28:33 -080051 @**android**.annotation*.Keep <init>(...);
Colin Cross38b48de2019-03-26 09:48:28 -070052}
53
Jared Dukecb3505c2023-09-01 21:27:30 +000054# Keep Dalvik optimization annotations. These annotations are special in that
55# 1) we want them preserved for visibility with ART, but 2) they don't have
56# RUNTIME retention. These minimal keep rules ensure they're not stripped by R8.
57# TODO(b/215417388): Export this rule from the owning library, core-libart,
58# via export_proguard_flags_files.
59-keepclassmembers,allowshrinking,allowoptimization,allowobfuscation,allowaccessmodification class * {
60 @dalvik.annotation.optimization.** *;
61}
62
Ying Wang57453512013-05-17 10:02:00 -070063-include proguard_basic_keeps.flags