platform_build/core/proguard_basic_keeps.flags
zhidou 12fdb34299 Keep proguard fields for lite runtime of jarjared class
Some targets rename protobuf.MessageLite with jarjar rules. This change
adds keep rules to keep the fields of renamed classes.

Bug: 233746531
Test: m checkbuild.
Change-Id: Ib487dbd35f69654489aa28577afb47b9fb87c6f6
Merged-In: I986f05455b45651749fb5f819661041d7399f683
2022-07-13 13:09:09 +00:00

79 lines
3.3 KiB
Text

# Some classes in the libraries extend package private classes to chare common functionality
# that isn't explicitly part of the API
-dontskipnonpubliclibraryclasses -dontskipnonpubliclibraryclassmembers
# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native
-keepclasseswithmembernames,includedescriptorclasses class * {
native <methods>;
}
# class$ methods are inserted by some compilers to implement .class construct,
# see http://proguard.sourceforge.net/manual/examples.html#library
-keepclassmembernames class * {
java.lang.Class class$(java.lang.String);
java.lang.Class class$(java.lang.String, boolean);
}
# Keep serializable classes and necessary members for serializable classes
# Copied from the ProGuard manual at http://proguard.sourceforge.net.
-keepnames class * implements java.io.Serializable
-keepclassmembers class * implements java.io.Serializable {
static final long serialVersionUID;
private static final java.io.ObjectStreamField[] serialPersistentFields;
!static !transient <fields>;
private void writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
java.lang.Object writeReplace();
java.lang.Object readResolve();
}
# Keep Throwable's constructor that takes a String argument.
-keepclassmembers class * extends java.lang.Throwable {
<init>(java.lang.String);
}
# Please specify classes to be kept explicitly in your package's configuration.
# -keep class * extends android.app.Activity
# -keep class * extends android.view.View
# -keep class * extends android.app.Service
# -keep class * extends android.content.BroadcastReceiver
# -keep class * extends android.content.ContentProvider
# -keep class * extends android.preference.Preference
# -keep class * extends android.app.BackupAgent
# Parcelable CREATORs must be kept for Parcelable functionality
-keep class * implements android.os.Parcelable {
public static final ** CREATOR;
}
# The support library contains references to newer platform versions.
# Don't warn about those in case this app is linking against an older
# platform version. We know about them, and they are safe.
# See proguard-android.txt in the SDK package.
#
# DO NOT USE THIS: We figured it's dangerous to blindly ignore all support library warnings.
# ProGuard may strip members of subclass of unknown super classes, in case an app is linking against
# LOCAL_SDK_VERSION lower than the support library's LOCAL_SDK_VERSION.
# See bug/20658265.
# -dontwarn android.support.**
# From https://github.com/google/guava/wiki/UsingProGuardWithGuava
# Striped64, LittleEndianByteArray, UnsignedBytes, AbstractFuture
-dontwarn sun.misc.Unsafe
# Futures.getChecked (which often won't work with Proguard anyway) uses this. It
# has a fallback, but again, don't use Futures.getChecked on Android regardless.
-dontwarn java.lang.ClassValue
# Less spammy.
-dontnote
# The lite proto runtime uses reflection to access fields based on the names in
# the schema, keep all the fields. Wildcard is used to apply the rule to classes
# that have been renamed with jarjar.
-keepclassmembers class * extends **.protobuf.MessageLite { <fields>; }