87 lines
3.2 KiB
Plaintext
87 lines
3.2 KiB
Plaintext
# Copyright 2016 The Chromium Authors
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
# Contains flags that we'd like all Chromium .apks to use.
|
|
|
|
# Keep line number information, useful for stack traces.
|
|
-keepattributes SourceFile,LineNumberTable
|
|
|
|
# Enable protobuf-related optimizations.
|
|
-shrinkunusedprotofields
|
|
|
|
# Allowing Proguard to change modifiers.
|
|
-allowaccessmodification
|
|
|
|
# Keep all CREATOR fields within Parcelable that are kept.
|
|
-keepclassmembers class * implements android.os.Parcelable {
|
|
public static *** CREATOR;
|
|
}
|
|
|
|
# Keep all default constructors for used Fragments. Required since they are
|
|
# called reflectively when fragments are reinflated after the app is killed.
|
|
-keepclassmembers class * extends android.app.Fragment {
|
|
public <init>();
|
|
}
|
|
-keepclassmembers class * extends androidx.fragment.app.Fragment {
|
|
public <init>();
|
|
}
|
|
|
|
# AndroidX classes that are inflated via reflection.
|
|
-keep public class androidx.preference.Preference {
|
|
public <init>(android.content.Context, android.util.AttributeSet);
|
|
}
|
|
-keep public class androidx.preference.PreferenceScreen {
|
|
public <init>(android.content.Context, android.util.AttributeSet);
|
|
}
|
|
-keep public class androidx.preference.PreferenceCategory {
|
|
public <init>(android.content.Context, android.util.AttributeSet);
|
|
}
|
|
-keep public class androidx.preference.ListPreference {
|
|
public <init>(android.content.Context, android.util.AttributeSet);
|
|
}
|
|
|
|
# SearchView is used in website_preferences_menu.xml and is constructed by
|
|
# Android using reflection.
|
|
-keep class androidx.appcompat.widget.SearchView {
|
|
public <init>(...);
|
|
}
|
|
|
|
# Referenced by androidx.preference.PreferenceInflater.
|
|
-keep public class androidx.preference.SwitchPreference {}
|
|
|
|
# Don't obfuscate Parcelables as they might be marshalled outside Chrome.
|
|
# If we annotated all Parcelables that get put into Bundles other than
|
|
# for saveInstanceState (e.g. PendingIntents), then we could actually keep the
|
|
# names of just those ones. For now, we'll just keep them all.
|
|
-keepnames class * implements android.os.Parcelable {}
|
|
|
|
# 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();
|
|
}
|
|
|
|
# This is to workaround crbug.com/1204690 - an old GMS app version crashes when
|
|
# ObjectWrapper contains > 1 fields, and this prevents R8 from inserting a
|
|
# synthetic field.
|
|
-keep,allowaccessmodification class com.google.android.gms.dynamic.ObjectWrapper {
|
|
<fields>;
|
|
}
|
|
|
|
# Remove calls to String.format() where the result goes unused. This can mask
|
|
# exceptions if the parameters to String.format() are invalid, but such cases
|
|
# are generally programming bugs anyways.
|
|
# Not using the return value generally occurs due to logging being stripped.
|
|
-assumenosideeffects class java.lang.String {
|
|
static java.lang.String format(...);
|
|
}
|
|
|
|
# Allows R8 to remove static field accesses to library APIs when the results
|
|
# are unused (E.g. tell it that it's okay to not trigger <clinit>).
|
|
# Not using the return value generally occurs due to logging being stripped.
|
|
-assumenosideeffects class android.**, java.** {
|
|
static <fields>;
|
|
}
|