platform_build/core/proguard.flags
Yifei Zhang e6d996479b build: add a few proguard rules [1/3]
- Introduce a new directory for some specific proguard rules.

kotlin.flags:
- Remove DebugMetadata
- Don't warn about missing non-runtime annotations

Test: build AOSP & test on internal
Bug: 309023911
Change-Id: Iee740b61a2afeba3482ff4e1f8213bd4cf46174a
2023-11-07 14:36:01 -08:00

64 lines
2.5 KiB
Text

# We have moved -dontobfuscate and -dontoptimize to the makefiles.
# dex does not like code run through proguard optimize and preverify steps.
# -dontoptimize
-dontpreverify
# Don't obfuscate. We only need dead code striping.
# -dontobfuscate
# Add this flag in your package's own configuration if it's needed.
#-flattenpackagehierarchy
# Keep classes and members with the platform-defined @VisibleForTesting annotation.
-keep @com.android.internal.annotations.VisibleForTesting class *
-keepclassmembers class * {
@com.android.internal.annotations.VisibleForTesting *;
}
# Keep classes and members with non-platform @VisibleForTesting annotations, but
# only within platform-defined packages. This avoids keeping external, library-specific
# test code that isn't actually needed for platform testing.
# TODO(b/239961360): Migrate away from androidx.annotation.VisibleForTesting
# and com.google.common.annotations.VisibleForTesting use in platform code.
-keep @**.VisibleForTesting class android.**,com.android.**,com.google.android.**
-keepclassmembers class android.**,com.android.**,com.google.android.** {
@**.VisibleForTesting *;
}
# Keep rule for members that are needed solely to keep alive downstream weak
# references, and could otherwise be removed after tree shaking optimizations.
-keepclassmembers,allowaccessmodification,allowobfuscation,allowshrinking class * {
@com.android.internal.annotations.KeepForWeakReference <fields>;
}
# Understand the common @Keep annotation from various Android packages:
# * android.support.annotation
# * androidx.annotation
# * com.android.internal.annotations
-keep class **android**.annotation*.Keep
-keep @**android**.annotation*.Keep class * { *; }
-keepclasseswithmembers class * {
@**android**.annotation*.Keep <methods>;
}
-keepclasseswithmembers class * {
@**android**.annotation*.Keep <fields>;
}
-keepclasseswithmembers class * {
@**android**.annotation*.Keep <init>(...);
}
# Keep Dalvik optimization annotations. These annotations are special in that
# 1) we want them preserved for visibility with ART, but 2) they don't have
# RUNTIME retention. These minimal keep rules ensure they're not stripped by R8.
# TODO(b/215417388): Export this rule from the owning library, core-libart,
# via export_proguard_flags_files.
-keepclassmembers,allowshrinking,allowoptimization,allowobfuscation,allowaccessmodification class * {
@dalvik.annotation.optimization.** *;
}
-include proguard_basic_keeps.flags
-include proguard/kotlin.flags