| # File: ../../third_party/androidx/androidx_annotations.flags |
| # Copyright 2023 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| -keep @androidx.annotation.Keep class * |
| -keepclasseswithmembers,allowaccessmodification class * { |
| @androidx.annotation.Keep <fields>; |
| } |
| -keepclasseswithmembers,allowaccessmodification class * { |
| @androidx.annotation.Keep <methods>; |
| } |
| |
| # File: ../../third_party/androidx/androidx_fragment.flags |
| # Copyright 2020 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| # Help R8 to remove debug related coded. All of these static constants are |
| # initialized to: Log.isLoggable(DEBUG, TAG). |
| |
| -assumevalues class androidx.fragment.** { |
| static boolean DEBUG return false; |
| } |
| |
| -assumenosideeffects class androidx.fragment.app.FragmentManager { |
| static boolean isLoggingEnabled(...) return false; |
| } |
| |
| # File: ../../third_party/androidx/androidx_mediarouter.flags |
| # Copyright 2019 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| # Help R8 determine that we don't use MediaRouteDynamicChooserDialog. |
| # https://crbug.com/1147188 |
| -assumevalues class ** { |
| boolean mUseDynamicGroup return false; |
| } |
| |
| # File: ../../third_party/androidx/androidx_preferences.flags |
| # Copyright 2023 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| # AndroidX classes that are inflated via reflection. |
| -keep public class androidx.preference.ListPreference { |
| public <init>(android.content.Context, android.util.AttributeSet); |
| } |
| -keep public class androidx.preference.Preference { |
| 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.PreferenceScreen { |
| public <init>(android.content.Context, android.util.AttributeSet); |
| } |
| |
| # Referenced by androidx.preference.PreferenceInflater. |
| -keep public class androidx.preference.SwitchPreference {} |
| |
| # File: ../../third_party/jni_zero/checkdiscard_proguard.flags |
| # Copyright 2023 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| # Chromium only applies this check when ENABLE_DCHECK=false. |
| |
| -checkdiscard @org.jni_zero.CheckDiscard class ** { |
| *; |
| } |
| -checkdiscard class ** { |
| @org.jni_zero.CheckDiscard *; |
| } |
| |
| # File: ../../build/android/chromium_annotations.flags |
| # Copyright 2022 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 related to annotations in //build/android that can be safely |
| # shared with Cronet, and thus would be appropriate for third-party apps to |
| # include. |
| |
| # Keep all annotation related attributes that can affect runtime |
| -keepattributes RuntimeVisible*Annotations |
| -keepattributes AnnotationDefault |
| |
| # Keeps for class level annotations. |
| -keep,allowaccessmodification @org.chromium.build.annotations.UsedByReflection class ** {} |
| |
| # Keeps for method level annotations. |
| -keepclasseswithmembers,allowaccessmodification class ** { |
| @org.chromium.build.annotations.UsedByReflection <methods>; |
| } |
| -keepclasseswithmembers,allowaccessmodification class ** { |
| @org.chromium.build.annotations.UsedByReflection <fields>; |
| } |
| |
| # Never inline classes, methods, or fields with this annotation, but allow |
| # shrinking and obfuscation. |
| # Relevant to fields when they are needed to store strong references to objects |
| # that are held as weak references by native code. |
| -if @org.chromium.build.annotations.DoNotInline class * { |
| *** *(...); |
| } |
| -keep,allowobfuscation,allowaccessmodification class <1> { |
| *** <2>(...); |
| } |
| -keepclassmembers,allowobfuscation,allowaccessmodification class * { |
| @org.chromium.build.annotations.DoNotInline <methods>; |
| } |
| -keepclassmembers,allowobfuscation,allowaccessmodification class * { |
| @org.chromium.build.annotations.DoNotInline <fields>; |
| } |
| |
| -alwaysinline class * { |
| @org.chromium.build.annotations.AlwaysInline *; |
| } |
| |
| # Keep all logs (Log.VERBOSE = 2). R8 does not allow setting to 0. |
| -maximumremovedandroidloglevel 1 class ** { |
| @org.chromium.build.annotations.DoNotStripLogs <methods>; |
| } |
| -maximumremovedandroidloglevel 1 @org.chromium.build.annotations.DoNotStripLogs class ** { |
| <methods>; |
| } |
| |
| # Never merge classes horizontally or vertically with this annotation. |
| # Relevant to classes being used as a key in maps or sets. |
| -keep,allowaccessmodification,allowobfuscation,allowshrinking @org.chromium.build.annotations.DoNotClassMerge class * |
| |
| # Mark members annotated with IdentifierNameString as identifier name strings |
| -identifiernamestring class * { |
| @org.chromium.build.annotations.IdentifierNameString *; |
| } |
| |
| # File: ../../base/android/proguard/chromium_apk.flags |
| # 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 !cr_allowunused,** implements android.os.Parcelable { |
| public static *** CREATOR; |
| } |
| |
| # 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 !cr_allowunused,** implements android.os.Parcelable {} |
| |
| # Keep all default constructors for used Fragments. Required since they are |
| # called reflectively when fragments are reinflated after the app is killed. |
| -keepclassmembers class !cr_allowunused,** extends android.app.Fragment { |
| public <init>(); |
| } |
| -keepclassmembers class !cr_allowunused,** extends androidx.fragment.app.Fragment { |
| public <init>(); |
| } |
| |
| # 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 !cr_allowunused,** { |
| 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 !cr_allowunused,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>; |
| } |
| |
| # Keep the names of exception types, to make it easier to understand stack |
| # traces in contexts where it's not trivial to deobfuscate them - for example |
| # when reported to app developers who are using WebView. |
| -keepnames class ** extends java.lang.Throwable {} |
| |
| # File: ../../base/android/proguard/chromium_code.flags |
| # 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 can be safely shared with Cronet, and thus would be |
| # appropriate for third-party apps to include. |
| |
| # Allow unused native methods to be removed, but prevent renaming on those that are kept. |
| -keepclasseswithmembernames,includedescriptorclasses,allowaccessmodification class !cr_allowunused,** { |
| native <methods>; |
| } |
| |
| # Use assumevalues block instead of assumenosideeffects block because Google3 proguard cannot parse |
| # assumenosideeffects blocks which overwrite return value. |
| # chromium_code.flags rather than remove_logging.flags so that it's included |
| # in cronet. |
| -assumevalues class org.chromium.base.Log { |
| static boolean isDebug() return false; |
| } |
| |
| # Keep all CREATOR fields within Parcelable that are kept. |
| -keepclassmembers class !cr_allowunused,org.chromium.** implements android.os.Parcelable { |
| public static *** CREATOR; |
| } |
| |
| # 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,allowaccessmodification class !cr_allowunused,org.chromium.** 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 !cr_allowunused,org.chromium.** { |
| public static **[] values(); |
| } |
| |
| # -identifiernamestring doesn't keep the module impl around, we have to |
| # explicitly keep it. |
| -if @org.chromium.components.module_installer.builder.ModuleInterface interface * |
| -keep,allowobfuscation,allowaccessmodification class !cr_allowunused,** extends <1> { |
| <init>(); |
| } |
| |
| # Required to remove fields until b/274802355 is resolved. |
| -assumevalues class !cr_allowunused,** { |
| final org.chromium.base.ThreadUtils$ThreadChecker * return _NONNULL_; |
| } |
| |
| # TODO(agrieve): Remove once we start to use Android U SDK. |
| -dontwarn android.window.BackEvent |
| -dontwarn android.window.OnBackAnimationCallback |
| |
| # File: ../../build/android/dcheck_is_off.flags |
| # Copyright 2019 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 are applied only when ENABLE_DCHECK=false. |
| |
| -checkdiscard @org.chromium.build.annotations.CheckDiscard class ** { |
| *; |
| } |
| -checkdiscard class ** { |
| @org.chromium.build.annotations.CheckDiscard *; |
| } |
| |
| # We always expect ServiceLoader.load() calls to be resolved by R8. |
| -whyareyounotinlining class java.util.ServiceLoader { *** load(...); } |
| |
| # This has a ServiceLoader.load() failure that we filter out in dex.py. |
| -checkdiscard class !cr_allowunused,kotlinx.coroutines.internal.FastServiceLoader { |
| *; |
| } |
| |
| # Remove kotlin assertions since they add a lot of string and rarely fail. |
| -assumenosideeffects class kotlin.jvm.internal.Intrinsics { |
| public static void check*(...); |
| } |
| |
| # File: ../../chrome/android/proguard/main.flags |
| # 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. |
| |
| # Every fragment must have an empty constructor, so it can be instantiated when |
| # restoring its activity's state. |
| -keep public class org.chromium.** extends androidx.fragment.app.Fragment { |
| public <init>(); |
| } |
| |
| # These classes aren't themselves referenced, but __ProcessService[0,1,2...] are |
| # referenced, and we look up these services by appending a number onto the name |
| # of the base class. Thus, we need to keep the base class name around so that |
| # the child classes can be looked up. |
| -keep class org.chromium.content.app.SandboxedProcessService { |
| public <init>(); |
| } |
| -keep class org.chromium.content.app.PrivilegedProcessService { |
| public <init>(); |
| } |
| |
| # Let proguard know CastMediaOptions in CastOptions is always null, so it can |
| # trim unused MediaNotificationService methods. This saves about 170 methods in |
| # the dex file. https://crbug.com/855081 |
| -assumenosideeffects class com.google.android.gms.cast.framework.CastOptions { |
| *** getCastMediaOptions() return null; |
| } |
| |
| # Also, because CastOptions creates a default CastMediaOptions object upon |
| # construction, we need to trim out the its builder as well, so we are truly |
| # assuming there's no CastMediaOptions instances anywhere. This is to avoid |
| # CastMediaOptions to reference resources upon construction. |
| -assumenosideeffects class com.google.android.gms.cast.framework.media.CastMediaOptions$Builder { |
| public <init>(); |
| public <clinit>(); |
| *** build() return null; |
| } |
| |
| # Keep implementation classes needed for split compat. These will be accessed by |
| # reflection. |
| -keep,allowobfuscation public class ** extends org.chromium.chrome.browser.base.SplitCompat*$Impl { |
| public <init>(); |
| } |
| |
| # File: ../../third_party/android_deps/material_design.flags |
| # Copyright 2021 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| # We're setting ignore_proguard_configs to avoid a rule keeping Behaviour |
| # subclasses, but we need this one still. |
| -if class androidx.appcompat.app.AppCompatViewInflater |
| -keep class com.google.android.material.theme.MaterialComponentsViewInflater { |
| <init>(); |
| } |
| |
| # File: ../../third_party/cardboard/proguard-rules.pro |
| # Copyright 2023 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| # Keep classes, methods, and fields that are accessed with JNI. |
| -keep class com.google.cardboard.sdk.UsedByNative |
| -keepclasseswithmembers,includedescriptorclasses class ** { |
| @com.google.cardboard.sdk.UsedByNative *; |
| } |
| # Keep proto methods that are directly queried over JNI since proguard cannot |
| # determine which methods those are. |
| -keep,includedescriptorclasses class com.google.cardboard.proto.CardboardDevice$DeviceParams$VerticalAlignmentType { |
| ordinal(); |
| } |
| -keep,includedescriptorclasses class com.google.cardboard.proto.CardboardDevice$DeviceParams { |
| getScreenToLensDistance(); |
| getInterLensDistance(); |
| getTrayToLensDistance(); |
| getVerticalAlignment(); |
| getDistortionCoefficients(int); |
| getDistortionCoefficientsCount(); |
| getLeftEyeFieldOfViewAngles(int); |
| } |
| # Prevent native methods which are used from being obfuscated. |
| -keepclasseswithmembernames,includedescriptorclasses,allowaccessmodification class com.google.cardboard.sdk.** { |
| native <methods>; |
| } |
| |
| # File: ../../android_webview/support_library/boundary_interfaces/proguard.flags |
| # Copyright 2018 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| # We need to avoid obfuscating the support library boundary interface because |
| # this API is shared with the Android Support Library. |
| # Note that we only 'keep' the package org.chromium.support_lib_boundary itself, |
| # any sub-packages of that package can still be obfuscated. |
| -keep public class org.chromium.support_lib_boundary.* { public *; } |
| |
| # File: ../../android_webview/nonembedded/java/proguard.flags |
| # 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. |
| |
| -keepclassmembers class org.chromium.android_webview.AwPdfExporter { |
| android.view.ViewGroup mContainerView; |
| } |
| |
| # Keep the factory and its public members; it's the main entry point used by the |
| # framework. Also keep the factory's constructors as some things are using them |
| # via reflection; crbug.com/1462346 |
| -keep class com.android.webview.chromium.WebViewChromiumFactoryProvider { |
| public *; |
| <init>(...); |
| } |
| -keep class com.android.webview.chromium.WebViewChromiumFactoryProviderFor* { |
| public *; |
| <init>(...); |
| } |
| |
| -keep class * implements android.webkit.WebViewFactoryProvider$Statics { |
| *; |
| } |
| |
| -keep class com.android.webview.chromium.ContentSettingsAdapter { |
| public *; |
| } |
| |
| -keep class com.android.webview.chromium.WebViewDatabaseAdapter { |
| public *; |
| } |
| |
| # This is the main entry point for APIs. It is kept to make developing with |
| # unreleased Android easier. |
| -keep class com.android.webview.chromium.WebViewChromium { |
| public *; |
| } |
| |
| # This rule prevents class merging on R$* resource classes (for example, R$anim, |
| # R$styleable, R$bool). This causes issues for WebView when unused resource |
| # stripping, since in WebView we are forced to detect which resources are unused |
| # by scanning the dex file for R$<res_type>.<res_name>. Having the R$* classes |
| # being merged together means that R$anim.foo may now be found in R$bool.foo, |
| # and this mistakenly will mark the foo resouce to be removed. More details in |
| # crbug.com/1348329. |
| -keep,allowaccessmodification,allowobfuscation,allowshrinking class **.R$* |
| |
| # Functor classes with native methods implemented in Android. |
| -keep class com.android.webview.chromium.DrawFunctor |
| -keep class com.android.webview.chromium.DrawGLFunctor |
| -keep class com.android.webview.chromium.GraphicsUtils |
| |
| # The lock file object must be kept explicitly to avoid it being optimized |
| # away and the lock released by the object's finalizer. |
| -keep class org.chromium.android_webview.AwDataDirLock { |
| java.nio.channels.FileLock sExclusiveFileLock; |
| java.io.RandomAccessFile sLockFile; |
| } |
| |
| # File: ../../third_party/jni_zero/proguard.flags |
| # Copyright 2023 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| # Keeps for method level annotations. |
| -keepclasseswithmembers,allowaccessmodification class ** { |
| @org.jni_zero.AccessedByNative <fields>; |
| } |
| -keepclasseswithmembers,includedescriptorclasses,allowaccessmodification class ** { |
| @org.jni_zero.CalledByNative <methods>; |
| } |
| -keepclasseswithmembers,includedescriptorclasses,allowaccessmodification class ** { |
| @org.jni_zero.CalledByNativeUnchecked <methods>; |
| } |
| |
| # File: ../../chrome/android/features/start_surface/proguard.flags |
| # Copyright 2019 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| |
| # To fix crbug/1017396. This is because AppBarLayout$ScrollingViewBehavior |
| # is instantiated via java.lang.reflect.Constructor in CoordinatorLayout.java. |
| # Note that AppBarLayout$Behavior is needed to keep the scrolling behavior. |
| -keep class com.google.android.material.appbar.AppBarLayout$Behavior { |
| public <init>(android.content.Context, android.util.AttributeSet); |
| public <init>(); |
| } |
| -keep class com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior { |
| public <init>(android.content.Context, android.util.AttributeSet); |
| public <init>(); |
| } |
| |
| # File: obj/third_party/androidx/androidx_appcompat_appcompat_java/proguard.txt |
| # Copyright (C) 2018 The Android Open Source Project |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| # Never inline methods, but allow shrinking and obfuscation. |
| -keepclassmembernames,allowobfuscation,allowshrinking class androidx.appcompat.widget.AppCompatTextViewAutoSizeHelper$Impl* { |
| <methods>; |
| } |
| |
| # File: obj/third_party/androidx/androidx_fragment_fragment_java/proguard.txt |
| # Copyright (C) 2020 The Android Open Source Project |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| # The default FragmentFactory creates Fragment instances using reflection |
| -if public class ** extends androidx.fragment.app.Fragment |
| -keepclasseswithmembers,allowobfuscation public class <1> { |
| public <init>(); |
| } |
| |
| # FragmentTransition will reflectively lookup: |
| # androidx.transition.FragmentTransitionSupport |
| # We should ensure that we keep the constructor if the code using this is alive |
| -if class androidx.fragment.app.FragmentTransition { |
| private static androidx.fragment.app.FragmentTransitionImpl resolveSupportImpl(); |
| } |
| -keep class androidx.transition.FragmentTransitionSupport { |
| public <init>(); |
| } |
| |
| # File: obj/third_party/androidx/androidx_lifecycle_lifecycle_runtime_android_java/proguard.txt |
| -keepattributes AnnotationDefault, |
| RuntimeVisibleAnnotations, |
| RuntimeVisibleParameterAnnotations, |
| RuntimeVisibleTypeAnnotations |
| |
| -keepclassmembers enum androidx.lifecycle.Lifecycle$Event { |
| <fields>; |
| } |
| |
| -keep class * implements androidx.lifecycle.GeneratedAdapter { |
| <init>(...); |
| } |
| |
| -keepclassmembers class ** { |
| @androidx.lifecycle.OnLifecycleEvent *; |
| } |
| |
| # this rule is need to work properly when app is compiled with api 28, see b/142778206 |
| # Also this rule prevents registerIn from being inlined. |
| -keepclassmembers class androidx.lifecycle.ReportFragment$LifecycleCallbacks { *; } |
| |
| # File: obj/third_party/androidx/androidx_lifecycle_lifecycle_viewmodel_android_java/proguard.txt |
| -keepclassmembers,allowobfuscation class * extends androidx.lifecycle.ViewModel { |
| <init>(); |
| } |
| |
| -keepclassmembers,allowobfuscation class * extends androidx.lifecycle.AndroidViewModel { |
| <init>(android.app.Application); |
| } |
| |
| # File: obj/third_party/androidx/androidx_lifecycle_lifecycle_viewmodel_savedstate_java/proguard.txt |
| -keepclassmembers,allowobfuscation class * extends androidx.lifecycle.ViewModel { |
| <init>(androidx.lifecycle.SavedStateHandle); |
| } |
| |
| -keepclassmembers,allowobfuscation class * extends androidx.lifecycle.AndroidViewModel { |
| <init>(android.app.Application,androidx.lifecycle.SavedStateHandle); |
| } |
| |
| # File: obj/third_party/androidx/androidx_media_media_java/proguard.txt |
| # Copyright (C) 2017 The Android Open Source Project |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| # Prevent Parcelable objects from being removed or renamed. |
| -keep class android.support.v4.media.** implements android.os.Parcelable { |
| public static final android.os.Parcelable$Creator *; |
| } |
| |
| # Prevent Parcelable objects from being removed or renamed. |
| -keep class androidx.media.** implements android.os.Parcelable { |
| public static final android.os.Parcelable$Creator *; |
| } |
| |
| # File: obj/third_party/androidx/androidx_mediarouter_mediarouter_java/proguard.txt |
| # Copyright 2019 The Android Open Source Project |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| # Allow R8 / ProGuard to remove debugging code. |
| -assumevalues class androidx.mediarouter.** { |
| static boolean DEBUG return false; |
| } |
| |
| # File: obj/third_party/androidx/androidx_recyclerview_recyclerview_java/proguard.txt |
| # Copyright (C) 2015 The Android Open Source Project |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| # When layoutManager xml attribute is used, RecyclerView inflates |
| #LayoutManagers' constructors using reflection. |
| -keep public class * extends androidx.recyclerview.widget.RecyclerView$LayoutManager { |
| public <init>(android.content.Context, android.util.AttributeSet, int, int); |
| public <init>(); |
| } |
| |
| -keepclassmembers class androidx.recyclerview.widget.RecyclerView { |
| public void suppressLayout(boolean); |
| public boolean isLayoutSuppressed(); |
| } |
| |
| # File: obj/third_party/androidx/androidx_savedstate_savedstate_java/proguard.txt |
| # Copyright (C) 2019 The Android Open Source Project |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| -keepclassmembers,allowobfuscation class * implements androidx.savedstate.SavedStateRegistry$AutoRecreated { |
| <init>(); |
| } |
| |
| # File: obj/third_party/androidx/androidx_transition_transition_java/proguard.txt |
| # Copyright (C) 2017 The Android Open Source Project |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| # Keep a field in transition that is used to keep a reference to weakly-referenced object |
| -keepclassmembers class androidx.transition.ChangeBounds$* extends android.animation.AnimatorListenerAdapter { |
| androidx.transition.ChangeBounds$ViewBounds mViewBounds; |
| } |
| |
| # File: obj/third_party/androidx/androidx_vectordrawable_vectordrawable_animated_java/proguard.txt |
| # Copyright (C) 2016 The Android Open Source Project |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| # keep setters in VectorDrawables so that animations can still work. |
| -keepclassmembers class androidx.vectordrawable.graphics.drawable.VectorDrawableCompat$* { |
| void set*(***); |
| *** get*(); |
| } |
| |
| # File: obj/third_party/androidx/androidx_versionedparcelable_versionedparcelable_java/proguard.txt |
| -keep class * implements androidx.versionedparcelable.VersionedParcelable |
| -keep public class android.support.**Parcelizer { *; } |
| -keep public class androidx.**Parcelizer { *; } |
| -keep public class androidx.versionedparcelable.ParcelImpl |
| |
| # File: ../../third_party/arcore-android-sdk-client/proguard.txt |
| # Keep ARCore public-facing classes |
| # This line from the ARCore SDK's .aar should not be needed when consuming ARCore SDK: |
| # -keepparameternames |
| |
| # These are part of the Java <-> native interfaces for ARCore. |
| -keepclasseswithmembernames,includedescriptorclasses class !com.google.ar.core.viewer.**, !com.google.ar.core.services.logging.**, !com.google.ar.sceneform.**, com.google.ar.** { |
| native <methods>; |
| } |
| |
| # This line from the ARCore SDK's .aar should not be needed when consuming ARCore SDK: |
| # -keep public class !com.google.ar.core.viewer.**, !com.google.ar.core**.R$*, !com.google.ar.core.services.logging.**, com.google.ar.core.** {*;} |
| |
| # If you need to build a library on top of arcore_client, and use this library for your project |
| # Please un-comment this line below. |
| # -keepattributes *Annotation* |
| |
| -keep class com.google.ar.core.annotations.UsedByNative |
| -keep @com.google.ar.core.annotations.UsedByNative class * |
| -keepclassmembers class * { |
| @com.google.ar.core.annotations.UsedByNative *; |
| } |
| |
| -keep class com.google.ar.core.annotations.UsedByReflection |
| -keep @com.google.ar.core.annotations.UsedByReflection class * |
| -keepclassmembers class * { |
| @com.google.ar.core.annotations.UsedByReflection *; |
| } |
| # Keep Dynamite classes |
| |
| # .aidl file will be proguarded, we should keep all Aidls. |
| # These lines from the ARCore SDK's .aar should not be needed when consuming ARCore SDK: |
| # -keep class com.google.vr.dynamite.client.IObjectWrapper { *; } |
| # -keep class com.google.vr.dynamite.client.ILoadedInstanceCreator { *; } |
| # -keep class com.google.vr.dynamite.client.INativeLibraryLoader { *; } |
| |
| # Keep annotation files and the file got annotated. |
| -keep class com.google.vr.dynamite.client.UsedByNative |
| -keep @com.google.vr.dynamite.client.UsedByNative class * |
| -keepclassmembers class * { |
| @com.google.vr.dynamite.client.UsedByNative *; |
| } |
| |
| -keep class com.google.vr.dynamite.client.UsedByReflection |
| -keep @com.google.vr.dynamite.client.UsedByReflection class * |
| -keepclassmembers class * { |
| @com.google.vr.dynamite.client.UsedByReflection *; |
| } |
| |
| # File: obj/third_party/android_deps/google_android_datatransport_transport_api_java/proguard.txt |
| -dontwarn com.google.auto.value.AutoValue |
| -dontwarn com.google.auto.value.AutoValue$Builder |
| |
| # File: obj/third_party/android_deps/google_firebase_firebase_common_java/proguard.txt |
| -dontwarn com.google.firebase.platforminfo.KotlinDetector |
| -dontwarn com.google.auto.value.AutoValue |
| -dontwarn com.google.auto.value.AutoValue$Builder |
| |
| # File: obj/third_party/android_deps/google_firebase_firebase_components_java/proguard.txt |
| -dontwarn com.google.firebase.components.Component$Instantiation |
| -dontwarn com.google.firebase.components.Component$ComponentType |
| |
| -keep class * implements com.google.firebase.components.ComponentRegistrar |
| |
| # File: obj/third_party/android_deps/google_firebase_firebase_messaging_java/proguard.txt |
| # Analytics library is optional. |
| # Access to this class is protected by try/catch(NoClassDefFoundError e) |
| # b/35686744 Don't fail during proguard if the class is missing from the APK. |
| -dontwarn com.google.android.gms.measurement.AppMeasurement* |
| |
| # File: obj/third_party/android_deps/google_play_services_auth_base_java/proguard.txt |
| # We keep all fields for every generated proto file as the runtime uses |
| # reflection over them that ProGuard cannot detect. Without this keep |
| # rule, fields may be removed that would cause runtime failures. |
| -keepclassmembers class * extends com.google.android.gms.internal.auth.zzer { |
| <fields>; |
| } |
| |
| # File: obj/third_party/android_deps/google_play_services_base_java/proguard.txt |
| # b/35135904 Ensure that proguard will not strip the mResultGuardian. |
| -keepclassmembers class com.google.android.gms.common.api.internal.BasePendingResult { |
| com.google.android.gms.common.api.internal.BasePendingResult$ReleasableResultGuardian mResultGuardian; |
| } |
| |
| # File: obj/third_party/android_deps/google_play_services_basement_java/proguard.txt |
| # Needed when building against pre-Marshmallow SDK. |
| -dontwarn android.security.NetworkSecurityPolicy |
| |
| # Needed when building against Marshmallow SDK. |
| -dontwarn android.app.Notification |
| |
| # Protobuf has references not on the Android boot classpath |
| -dontwarn sun.misc.Unsafe |
| -dontwarn libcore.io.Memory |
| |
| # Internal Google annotations for generating Proguard keep rules. |
| -dontwarn com.google.android.apps.common.proguard.UsedBy* |
| |
| # Annotations referenced by the SDK but whose definitions are contained in |
| # non-required dependencies. |
| -dontwarn javax.annotation.** |
| -dontwarn org.checkerframework.** |
| -dontwarn com.google.errorprone.annotations.** |
| -dontwarn org.jspecify.nullness.NullMarked |
| |
| # Proguard flags for consumers of the Google Play services SDK |
| # https://developers.google.com/android/guides/setup#add_google_play_services_to_your_project |
| |
| # Keep SafeParcelable NULL value, needed for reflection by DowngradeableSafeParcel |
| -keepclassmembers public class com.google.android.gms.common.internal.safeparcel.SafeParcelable { |
| public static final *** NULL; |
| } |
| |
| # Needed for Parcelable/SafeParcelable classes & their creators to not get renamed, as they are |
| # found via reflection. |
| -keep class com.google.android.gms.common.internal.ReflectedParcelable |
| -keepnames class * implements com.google.android.gms.common.internal.ReflectedParcelable |
| -keepclassmembers class * implements android.os.Parcelable { |
| public static final *** CREATOR; |
| } |
| |
| # Keep the classes/members we need for client functionality. |
| -keep @interface android.support.annotation.Keep |
| -keep @androidx.annotation.Keep class * |
| -keepclasseswithmembers class * { |
| @androidx.annotation.Keep <fields>; |
| } |
| -keepclasseswithmembers class * { |
| @androidx.annotation.Keep <methods>; |
| } |
| |
| # Keep androidX equivalent of above android.support to allow Jetification. |
| -keep @interface androidx.annotation.Keep |
| -keep @androidx.annotation.Keep class * |
| -keepclasseswithmembers class * { |
| @androidx.annotation.Keep <fields>; |
| } |
| -keepclasseswithmembers class * { |
| @androidx.annotation.Keep <methods>; |
| } |
| |
| # Keep the names of classes/members we need for client functionality. |
| -keep @interface com.google.android.gms.common.annotation.KeepName |
| -keepnames @com.google.android.gms.common.annotation.KeepName class * |
| -keepclassmembernames class * { |
| @com.google.android.gms.common.annotation.KeepName *; |
| } |
| |
| # Keep Dynamite API entry points |
| -keep @interface com.google.android.gms.common.util.DynamiteApi |
| -keep @com.google.android.gms.common.util.DynamiteApi public class * { |
| public <fields>; |
| public <methods>; |
| } |
| |
| # File: obj/third_party/android_deps/google_play_services_cast_framework_java/proguard.txt |
| -keep public class * implements com.google.android.gms.cast.framework.OptionsProvider |
| |
| # File: obj/third_party/android_deps/google_play_services_clearcut_java/proguard.txt |
| # We keep all fields for every generated proto file as the runtime uses |
| # reflection over them that ProGuard cannot detect. Without this keep |
| # rule, fields may be removed that would cause runtime failures. |
| -keepclassmembers class * extends com.google.android.gms.internal.clearcut.zzcg { |
| <fields>; |
| } |
| |
| # File: obj/third_party/android_deps/google_play_services_gcm_java/proguard.txt |
| # Ensure that proguard will not strip the handleIntent method. |
| -keepclassmembers class com.google.android.gms.gcm.GcmListenerService { |
| public void handleIntent(android.content.Intent); |
| } |
| |
| # File: obj/third_party/android_deps/google_play_services_vision_common_java/proguard.txt |
| # We keep all fields for every generated proto file as the runtime uses |
| # reflection over them that ProGuard cannot detect. Without this keep |
| # rule, fields may be removed that would cause runtime failures. |
| -keepclassmembers class * extends com.google.android.gms.internal.vision.zzjb { |
| <fields>; |
| } |
| |
| # File: obj/third_party/android_deps/google_play_services_vision_java/proguard.txt |
| # We keep all fields for every generated proto file as the runtime uses |
| # reflection over them that ProGuard cannot detect. Without this keep |
| # rule, fields may be removed that would cause runtime failures. |
| -keepclassmembers class * extends com.google.android.gms.internal.vision.zzjb { |
| <fields>; |
| } |
| |
| # File: ../../base/android/proguard/remove_logging.flags |
| # Copyright 2022 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| # Remove Log.d(), Log.v(), and corresponding isLoggable() calls. |
| # Log.DEBUG = 3, Log.VERBOSE = 2. |
| # https://stackoverflow.com/questions/73876633/what-does-the-r8-maximumremovedandroidloglevel-option |
| -maximumremovedandroidloglevel 3 |
| |
| # Makes try-with-resources less inefficient. Saved 3.8kb when added. |
| -assumenosideeffects class java.lang.Throwable { |
| void addSuppressed(...); |
| } |
| |
| # Remove all logging calls via JDK Loggers. They are generally from |
| # unused parts of third-party libraries. |
| -assumenosideeffects class java.util.logging.Logger { |
| void finest(...); |
| void finer(...); |
| void fine(...); |
| void info(...); |
| void warning(...); |
| void severe(...); |
| void throwing(...); |
| void log(...); |
| void logp(...); |
| static java.util.logging.Logger getLogger(...) return _NONNULL_; |
| boolean isLoggable(...) return false; |
| } |
| |
| # Remove accesses to Level.<thing> that go unused. |
| -assumenosideeffects class java.util.logging.Level { |
| <fields>; |
| # Flogger uses Level objects, so do not set a return value for intValue(). |
| int intValue(); |
| } |
| |
| # Remove fields of type Logger. |
| -assumenosideeffects class * { |
| java.util.logging.Logger * return _NONNULL_; |
| } |
| |
| # File: ../../third_party/android_deps/libs/org_jetbrains_kotlinx_kotlinx_coroutines_android/kotlinx-coroutines-android-1.6.4.jar:META-INF/com.android.tools/r8-from-1.6.0/coroutines.pro |
| # Allow R8 to optimize away the FastServiceLoader. |
| # Together with ServiceLoader optimization in R8 |
| # this results in direct instantiation when loading Dispatchers.Main |
| -assumenosideeffects class kotlinx.coroutines.internal.MainDispatcherLoader { |
| boolean FAST_SERVICE_LOADER_ENABLED return false; |
| } |
| |
| -assumenosideeffects class kotlinx.coroutines.internal.FastServiceLoaderKt { |
| boolean ANDROID_DETECTED return true; |
| } |
| |
| # Disable support for "Missing Main Dispatcher", since we always have Android main dispatcher |
| -assumenosideeffects class kotlinx.coroutines.internal.MainDispatchersKt { |
| boolean SUPPORT_MISSING return false; |
| } |
| |
| # Statically turn off all debugging facilities and assertions |
| -assumenosideeffects class kotlinx.coroutines.DebugKt { |
| boolean getASSERTIONS_ENABLED() return false; |
| boolean getDEBUG() return false; |
| boolean getRECOVER_STACK_TRACES() return false; |
| } |
| |
| # File: ../../third_party/android_deps/libs/org_jetbrains_kotlinx_kotlinx_coroutines_core_jvm/kotlinx-coroutines-core-jvm-1.6.4.jar:META-INF/com.android.tools/r8/coroutines.pro |
| # When editing this file, update the following files as well: |
| # - META-INF/proguard/coroutines.pro |
| # - META-INF/com.android.tools/proguard/coroutines.pro |
| |
| # Most of volatile fields are updated with AFU and should not be mangled |
| -keepclassmembers class kotlinx.coroutines.** { |
| volatile <fields>; |
| } |
| |
| # Same story for the standard library's SafeContinuation that also uses AtomicReferenceFieldUpdater |
| -keepclassmembers class kotlin.coroutines.SafeContinuation { |
| volatile <fields>; |
| } |
| |
| # These classes are only required by kotlinx.coroutines.debug.AgentPremain, which is only loaded when |
| # kotlinx-coroutines-core is used as a Java agent, so these are not needed in contexts where ProGuard is used. |
| -dontwarn java.lang.instrument.ClassFileTransformer |
| -dontwarn sun.misc.SignalHandler |
| -dontwarn java.lang.instrument.Instrumentation |
| -dontwarn sun.misc.Signal |
| |
| # Only used in `kotlinx.coroutines.internal.ExceptionsConstructor`. |
| # The case when it is not available is hidden in a `try`-`catch`, as well as a check for Android. |
| -dontwarn java.lang.ClassValue |
| |
| # An annotation used for build tooling, won't be directly accessed. |
| -dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement |
| |
| # File: //build/android/gyp/proguard.py (generated rules) |
| -repackageclasses '' |