# This is a configuration file for ProGuard. # http://proguard.sourceforge.net/index.html#manual/usage.html # # Starting with version 2.2 of the Android plugin for Gradle, this file is distributed together with # the plugin and unpacked at build-time. The files in $ANDROID_HOME are no longer maintained and # will be ignored by new version of the Android plugin for Gradle. # Optimization is turned off by default. Dex does not like code run # through the ProGuard optimize steps (and performs some # of these optimizations on its own). # Note that if you want to enable optimization, you cannot just # include optimization flags in your own project configuration file; # instead you will need to point to the # "proguard-android-optimize.txt" file instead of this one from your # project.properties file. -dontoptimize -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -verbose # Preserve some attributes that may be required for reflection. -keepattributes *Annotation*,Signature,InnerClasses,EnclosingMethod -keep public class com.google.vending.licensing.ILicensingService -keep public class com.android.vending.licensing.ILicensingService -keep public class com.google.android.vending.licensing.ILicensingService -dontnote com.android.vending.licensing.ILicensingService -dontnote com.google.vending.licensing.ILicensingService -dontnote com.google.android.vending.licensing.ILicensingService # For native methods, see http://proguard.sourceforge.net/manual/examples.html#native -keepclasseswithmembernames class * { native <methods>; } # Keep setters in Views so that animations can still work. -keepclassmembers public class * extends android.view.View { void set*(***); *** get*(); } # We want to keep methods in Activity that could be used in the XML attribute onClick. -keepclassmembers class * extends android.app.Activity { public void *(android.view.View); } # For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -keepclassmembers class * implements android.os.Parcelable { public static final ** CREATOR; } -keepclassmembers class **.R$* { public static <fields>; } # Preserve annotated Javascript interface methods. -keepclassmembers class * { @android.webkit.JavascriptInterface <methods>; } # The support libraries 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. -dontnote android.support.** -dontnote androidx.** -dontwarn android.support.** -dontwarn androidx.** # This class is deprecated, but remains for backward compatibility. -dontwarn android.util.FloatMath # Understand the @Keep support annotation. -keep class android.support.annotation.Keep -keep class androidx.annotation.Keep -keep @android.support.annotation.Keep class * {*;} -keep @androidx.annotation.Keep class * {*;} -keepclasseswithmembers class * { @android.support.annotation.Keep <methods>; } -keepclasseswithmembers class * { @androidx.annotation.Keep <methods>; } -keepclasseswithmembers class * { @android.support.annotation.Keep <fields>; } -keepclasseswithmembers class * { @androidx.annotation.Keep <fields>; } -keepclasseswithmembers class * { @android.support.annotation.Keep <init>(...); } -keepclasseswithmembers class * { @androidx.annotation.Keep <init>(...); } # These classes are duplicated between android.jar and org.apache.http.legacy.jar. -dontnote org.apache.http.** -dontnote android.net.http.** # These classes are duplicated between android.jar and core-lambda-stubs.jar. -dontnote java.lang.invoke.** # Add project specific ProGuard rules here. # You can control the set of applied configuration files using the # proguardFiles setting in build.gradle. # # For more details, see # http://developer.android.com/guide/developing/tools/proguard.html # If your project uses WebView with JS, uncomment the following # and specify the fully qualified class name to the JavaScript interface # class: #-keepclassmembers class fqcn.of.javascript.interface.for.webview { # public *; #} # Uncomment this to preserve the line number information for # debugging stack traces. #-keepattributes SourceFile,LineNumberTable -printconfiguration ../build/reports/full-r8-config.txt # hide the original source file name. -renamesourcefileattribute SourceFile ###### Strip logging statements --verboze, debug and info ###### #-assumenosideeffects class timber.log.Timber* { # public static *** v(...); # public static *** d(...); # public static *** i(...); #} ####### for Android Gif Drawable ###### -keep public class pl.droidsonroids.gif.GifIOException{<init>(int);} -keep class pl.droidsonroids.gif.GifInfoHandle{<init>(long,int,int,int);} ########## For Crashlytics ########## -keepattributes SourceFile,LineNumberTable # Keep file names and line numbers. -keep public class * extends java.lang.Exception # Optional: Keep custom exceptions. -keep class com.google.firebase.crashlytics.** { *; } -dontwarn com.google.firebase.crashlytics.** # for DexGuard only #-keepresourcexmlelements manifest/application/meta-data@value=GlideModule ########## For Application Specific ########## # This rule will properly ProGuard all the model classes in # the package com.yourcompany.models. Modify to fit the structure # of your app. -keepnames class sg.ndi.model.* -keepnames class sg.ndi.model.*.* #-keep class sg.ndi.model.** { # *; #} #-keep class sg.ndi.adapter.** { # *; #} # Keep the extension function name so that they appear organized in Firebase crashlytics console -keepclassmembers class sg.ndi.utility.CrashlyticsUtil.Companion { *; } ########## For RxNetwork ########## -dontwarn com.github.pwittchen.reactivenetwork.library.rx2.ReactiveNetwork -dontwarn io.reactivex.functions.Function -dontwarn rx.internal.util.** -dontwarn sun.misc.Unsafe ########## For Vkey SDK ########## -dontwarn vkey.** -keep class vkey.** {*;} -dontwarn com.vkey.** -keep class com.vkey.** {*;} ######### For Samsung Pass Sdk ########## -dontwarn com.samsung.** -keep class com.samsung.** {*;} ######### For Permission Dispatcher ########## -dontwarn permissions.dispatcher.** ## To fix VerifyError on Android Tablet: ## Verifier rejected class Lcom/google/android/material/tabs/TabLayout$Tab; ## java.lang.VerifyError: com/google/android/material/tabs/TabLayout$Tab ## https://github.com/material-components/material-components-android/issues/397 #-keep class com.google.android.material.tabs.TabLayout$Tab { # *; #} # https://proandroiddev.com/is-your-kotlin-code-really-obfuscated-a36abf033dde -assumenosideeffects class kotlin.jvm.internal.Intrinsics { *; } # For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -keep class kotlin.Metadata { *; } -dontwarn java.lang.ClassValue -keep class java.lang.ClassValue { *; } # JSR 305 annotations are for embedding nullability information. -dontwarn javax.annotation.** -keepclasseswithmembers class * { @com.squareup.moshi.* <methods>; } -keep @com.squareup.moshi.JsonQualifier interface * # Enum field names are used by the integrated EnumJsonAdapter. # values() is synthesized by the Kotlin compiler and is used by EnumJsonAdapter indirectly # Annotate enums with @JsonClass(generateAdapter = false) to use them with Moshi. -keepclassmembers @com.squareup.moshi.JsonClass class * extends java.lang.Enum { <fields>; **[] values(); } -keep class kotlin.reflect.jvm.internal.impl.builtins.BuiltInsLoaderImpl -keepclassmembers class kotlin.Metadata { public <methods>; } ########## For retrofit2 ########## # Retrofit does reflection on generic parameters. InnerClasses is required to use Signature and # EnclosingMethod is required to use InnerClasses. -keepattributes Signature, InnerClasses, EnclosingMethod # Retrofit does reflection on method and parameter annotations. -keepattributes RuntimeVisibleAnnotations, RuntimeVisibleParameterAnnotations # Retain service method parameters when optimizing. -keepclassmembers,allowshrinking,allowobfuscation interface * { @retrofit2.http.* <methods>; } # Ignore annotation used for build tooling. -dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement # Ignore JSR 305 annotations for embedding nullability information. -dontwarn javax.annotation.** # Guarded by a NoClassDefFoundError try/catch and only used when on the classpath. -dontwarn kotlin.Unit # Top-level functions that can only be used by Kotlin. -dontwarn retrofit2.KotlinExtensions -dontwarn retrofit2.KotlinExtensions.* # With R8 full mode, it sees no subtypes of Retrofit interfaces since they are created with a Proxy # and replaces all potential values with null. Explicitly keeping the interfaces prevents this. -if interface * { @retrofit2.http.* <methods>; } -keep,allowobfuscation interface <1> ########## For OKIO ########## -dontwarn org.codehaus.mojo.animal_sniffer.* # JSR 305 annotations are for embedding nullability information. -dontwarn javax.annotation.** # A resource is loaded with a relative path so the package of this class must be preserved. -keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase # Animal Sniffer compileOnly dependency to ensure APIs are compatible with older versions of Java. -dontwarn org.codehaus.mojo.animal_sniffer.* # OkHttp platform used only on JVM and when Conscrypt dependency is available. -dontwarn okhttp3.internal.platform.ConscryptPlatform ########## For CONSCRYPT ########## # Many of the Conscrypt classes are referenced indirectly via JNI or # reflection. # This could probably be tightened up, but this will get it building for now. # TODO(kroot): Need anything special to prevent obfuscation? -keep class org.conscrypt.** { *; } -keep class com.an # Backward compatibility code. -dontnote libcore.io.Libcore -dontnote org.apache.harmony.xnet.provider.jsse.OpenSSLRSAPrivateKey -dontnote org.apache.harmony.security.utils.AlgNameMapper -dontnote sun.security.x509.AlgorithmId -dontwarn dalvik.system.BlockGuard -dontwarn dalvik.system.BlockGuard.Policy -dontwarn dalvik.system.CloseGuard -dontwarn com.android.org.conscrypt.AbstractConscryptSocket -dontwarn com.android.org.conscrypt.ConscryptFileDescriptorSocket -dontwarn com.android.org.conscrypt.OpenSSLSocketImpl -dontwarn org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl ########## For Glide Image Loader ########## -keep public class * implements com.bumptech.glide.module.GlideModule -keep public class * extends com.bumptech.glide.module.AppGlideModule -keep public enum com.bumptech.glide.load.ImageHeaderParser$** { **[] $VALUES; public *; } #If you're targeting any API level less than Android API 27, also include: -dontwarn com.bumptech.glide.load.resource.bitmap.VideoDecoder -keep class androidx.biometric.DeviceCredentialHandlerActivity { <init>(); } -keep class androidx.core.app.CoreComponentFactory { <init>(); } -keep class androidx.core.content.FileProvider { <init>(); } -keep class androidx.lifecycle.ProcessLifecycleOwnerInitializer { <init>(); } -keep class androidx.room.MultiInstanceInvalidationService { <init>(); } -keep class androidx.work.impl.background.gcm.WorkManagerGcmService { <init>(); } -keep class androidx.work.impl.background.systemalarm.ConstraintProxy$BatteryChargingProxy { <init>(); } -keep class androidx.work.impl.background.systemalarm.ConstraintProxy$BatteryNotLowProxy { <init>(); } -keep class androidx.work.impl.background.systemalarm.ConstraintProxy$NetworkStateProxy { <init>(); } -keep class androidx.work.impl.background.systemalarm.ConstraintProxy$StorageNotLowProxy { <init>(); } -keep class androidx.work.impl.background.systemalarm.ConstraintProxyUpdateReceiver { <init>(); } -keep class androidx.work.impl.background.systemalarm.RescheduleReceiver { <init>(); } -keep class androidx.work.impl.background.systemalarm.SystemAlarmService { <init>(); } -keep class androidx.work.impl.background.systemjob.SystemJobService { <init>(); } -keep class androidx.work.impl.diagnostics.DiagnosticsReceiver { <init>(); } -keep class androidx.work.impl.foreground.SystemForegroundService { <init>(); } -keep class androidx.work.impl.utils.ForceStopRunnable$BroadcastReceiver { <init>(); } -keep class com.google.android.datatransport.runtime.backends.TransportBackendDiscovery { <init>(); } -keep class com.google.android.datatransport.runtime.scheduling.jobscheduling.AlarmManagerSchedulerBroadcastReceiver { <init>(); } -keep class com.google.android.datatransport.runtime.scheduling.jobscheduling.JobInfoSchedulerService { <init>(); } -keep class com.google.android.gms.common.api.GoogleApiActivity { <init>(); } -keep class com.google.android.gms.measurement.AppMeasurementJobService { <init>(); } -keep class com.google.android.gms.measurement.AppMeasurementReceiver { <init>(); } -keep class com.google.android.gms.measurement.AppMeasurementService { <init>(); } -keep class com.google.android.play.core.assetpacks.AssetPackExtractionService { <init>(); } -keep class com.google.android.play.core.common.PlayCoreDialogWrapperActivity { <init>(); } -keep class com.google.android.play.core.missingsplits.PlayCoreMissingSplitsActivity { <init>(); } -keep class com.google.firebase.auth.internal.FederatedSignInActivity { <init>(); } -keep class com.google.firebase.components.ComponentDiscoveryService { <init>(); } -keep class com.google.firebase.iid.FirebaseInstanceIdReceiver { <init>(); } -keep class com.google.firebase.messaging.FirebaseMessagingService { <init>(); } -keep class com.google.firebase.perf.provider.FirebasePerfProvider { <init>(); } -keep class com.google.firebase.provider.FirebaseInitProvider { <init>(); } -keep class com.journeyapps.barcodescanner.CaptureActivity { <init>(); } -keep class com.vkey.android.internal.vguard.cache.ProcessHttpRequestIntentService { <init>(); } -keep class sg.ndi.App { <init>(); } -keep class sg.ndi.activity.AppLockActivity { <init>(); } -keep class sg.ndi.activity.AppPermanentResetActivity { <init>(); } -keep class sg.ndi.activity.AppUseGuideActivity { <init>(); } -keep class sg.ndi.activity.AuthenticationActivity { <init>(); } -keep class sg.ndi.activity.AuthenticationPinActivity { <init>(); } -keep class sg.ndi.activity.AuthenticationVerifyActivity { <init>(); } -keep class sg.ndi.activity.ContactUsActivity { <init>(); } -keep class sg.ndi.activity.DashBoardActivity { <init>(); } -keep class sg.ndi.activity.EServiceShortcutsExplainerActivity { <init>(); } -keep class sg.ndi.activity.EServiceVerifyingActivity { <init>(); } -keep class sg.ndi.activity.ExplainerActivity { <init>(); } -keep class sg.ndi.activity.FingerPrintActivationActivity { <init>(); } -keep class sg.ndi.activity.FragmentHostActivity { <init>(); } -keep class sg.ndi.activity.GenericDeviceStatusActivity { <init>(); } -keep class sg.ndi.activity.InitializationActivity { <init>(); } -keep class sg.ndi.activity.PermissionsExplainerActivity { <init>(); } -keep class sg.ndi.activity.PinMailerWaitActivity { <init>(); } -keep class sg.ndi.activity.PinVerifyActivity { <init>(); } -keep class sg.ndi.activity.PostThreatDisplayActivity { <init>(); } -keep class sg.ndi.activity.QrAuthenticationActivity { <init>(); } -keep class sg.ndi.activity.QrId2Activity { <init>(); } -keep class sg.ndi.activity.QrIdActivity { <init>(); } -keep class sg.ndi.activity.QrIdExplainerActivity { <init>(); } -keep class sg.ndi.activity.QrInitializationActivity { <init>(); } -keep class sg.ndi.activity.RegistrationActivity { <init>(); } -keep class sg.ndi.activity.SimpleWebViewActivity { <init>(); } -keep class sg.ndi.activity.SoftTokenActivationActivity { <init>(); } -keep class sg.ndi.activity.SoftTokenActivationPinEntryActivity { <init>(); } -keep class sg.ndi.activity.SoftTokenProvisionActivity { <init>(); } -keep class sg.ndi.activity.StepByStepGuideActivity { <init>(); } -keep class sg.ndi.activity.TutorialHolderActivity { <init>(); } -keep class sg.ndi.activity.VideoPlayerActivity { <init>(); } -keep class sg.ndi.ndim.activity.NDIQuickOnboardingActivity { <init>(); } -keep class sg.ndi.ndim.activity.NDITermsActivity { <init>(); } -keep class sg.ndi.service.BootBroadcastReceiver { <init>(); } -keep class sg.ndi.service.MyFcmListenerService { <init>(); } -keep class sg.ndi.utility.ExitAndRemoveFromRecentAppsDummyActivity { <init>(); } -keep class android.widget.Space { <init>(android.content.Context, android.util.AttributeSet); } -keep class androidx.appcompat.app.AlertController$RecycleListView { <init>(android.content.Context, android.util.AttributeSet); } -keep class androidx.appcompat.view.menu.ActionMenuItemView { <init>(android.content.Context, android.util.AttributeSet); } -keep class androidx.appcompat.view.menu.ExpandedMenuView { <init>(android.content.Context, android.util.AttributeSet); } -keep class androidx.appcompat.view.menu.ListMenuItemView { <init>(android.content.Context, android.util.AttributeSet); } -keep class androidx.appcompat.widget.ActionBarContainer { <init>(android.content.Context, android.util.AttributeSet); } -keep class androidx.appcompat.widget.ActionBarContextView { <init>(android.content.Context, android.util.AttributeSet); } -keep class androidx.appcompat.widget.ActionBarOverlayLayout { <init>(android.content.Context, android.util.AttributeSet); } -keep class androidx.appcompat.widget.ActionMenuView { <init>(android.content.Context, android.util.AttributeSet); } -keep class androidx.appcompat.widget.ActivityChooserView$InnerLayout { <init>(android.content.Context, android.util.AttributeSet); } -keep class androidx.appcompat.widget.AlertDialogLayout { <init>(android.content.Context, android.util.AttributeSet); } -keep class androidx.appcompat.widget.AppCompatCheckBox { <init>(android.content.Context, android.util.AttributeSet); } -keep class androidx.appcompat.widget.AppCompatCheckedTextView { <init>(android.content.Context, android.util.AttributeSet); } -keep class androidx.appcompat.widget.AppCompatRadioButton { <init>(android.content.Context, android.util.AttributeSet); } -keep class androidx.appcompat.widget.ButtonBarLayout { <init>(android.content.Context, android.util.AttributeSet); } -keep class androidx.appcompat.widget.ContentFrameLayout { <init>(android.content.Context, android.util.AttributeSet); } -keep class androidx.appcompat.widget.DialogTitle { <init>(android.content.Context, android.util.AttributeSet); } -keep class androidx.appcompat.widget.FitWindowsFrameLayout { <init>(android.content.Context, android.util.AttributeSet); } -keep class androidx.appcompat.widget.FitWindowsLinearLayout { <init>(android.content.Context, android.util.AttributeSet); } -keep class androidx.appcompat.widget.SearchView$SearchAutoComplete { <init>(android.content.Context, android.util.AttributeSet); } -keep class androidx.appcompat.widget.SwitchCompat { <init>(android.content.Context, android.util.AttributeSet); } -keep class androidx.appcompat.widget.Toolbar { <init>(android.content.Context, android.util.AttributeSet); } -keep class androidx.appcompat.widget.ViewStubCompat { <init>(android.content.Context, android.util.AttributeSet); } -keep class androidx.cardview.widget.CardView { <init>(android.content.Context, android.util.AttributeSet); } -keep class androidx.constraintlayout.widget.Barrier { <init>(android.content.Context, android.util.AttributeSet); } -keep class androidx.constraintlayout.widget.ConstraintLayout { <init>(android.content.Context, android.util.AttributeSet); } -keep class androidx.constraintlayout.widget.Group { <init>(android.content.Context, android.util.AttributeSet); } -keep class androidx.constraintlayout.widget.Guideline { <init>(android.content.Context, android.util.AttributeSet); } -keep class androidx.coordinatorlayout.widget.CoordinatorLayout { <init>(android.content.Context, android.util.AttributeSet); } -keep class androidx.core.widget.ContentLoadingProgressBar { <init>(android.content.Context, android.util.AttributeSet); } -keep class androidx.core.widget.NestedScrollView { <init>(android.content.Context, android.util.AttributeSet); } -keep class androidx.emoji.widget.EmojiAppCompatTextView { <init>(android.content.Context, android.util.AttributeSet); } -keep class androidx.emoji.widget.EmojiExtractEditText { <init>(android.content.Context, android.util.AttributeSet); } -keep class androidx.emoji.widget.ExtractButtonCompat { <init>(android.content.Context, android.util.AttributeSet); } -keep class androidx.fragment.app.FragmentContainerView { <init>(android.content.Context, android.util.AttributeSet); } -keep class androidx.gridlayout.widget.GridLayout { <init>(android.content.Context, android.util.AttributeSet); } -keep class androidx.navigation.fragment.NavHostFragment { <init>(); } -keep class androidx.preference.UnPressableLinearLayout { <init>(android.content.Context, android.util.AttributeSet); } -keep class androidx.preference.internal.PreferenceImageView { <init>(android.content.Context, android.util.AttributeSet); } -keep class androidx.recyclerview.widget.RecyclerView { <init>(android.content.Context, android.util.AttributeSet); } -keep class androidx.swiperefreshlayout.widget.SwipeRefreshLayout { <init>(android.content.Context, android.util.AttributeSet); } -keep class androidx.viewpager.widget.ViewPager { <init>(android.content.Context, android.util.AttributeSet); } -keep class androidx.viewpager2.widget.ViewPager2 { <init>(android.content.Context, android.util.AttributeSet); } -keep class com.afollestad.materialdialogs.internal.button.DialogActionButton { <init>(android.content.Context, android.util.AttributeSet); } -keep class com.afollestad.materialdialogs.internal.button.DialogActionButtonLayout { <init>(android.content.Context, android.util.AttributeSet); } -keep class com.afollestad.materialdialogs.internal.list.DialogRecyclerView { <init>(android.content.Context, android.util.AttributeSet); } -keep class com.afollestad.materialdialogs.internal.main.DialogLayout { <init>(android.content.Context, android.util.AttributeSet); } -keep class com.afollestad.materialdialogs.internal.main.DialogScrollView { <init>(android.content.Context, android.util.AttributeSet); } -keep class com.afollestad.materialdialogs.internal.main.DialogTitleLayout { <init>(android.content.Context, android.util.AttributeSet); } -keep class com.afollestad.materialdialogs.internal.message.DialogContentLayout { <init>(android.content.Context, android.util.AttributeSet); } -keep class com.afollestad.materialdialogs.internal.rtl.RtlTextView { <init>(android.content.Context, android.util.AttributeSet); } -keep class com.google.android.flexbox.FlexboxLayout { <init>(android.content.Context, android.util.AttributeSet); } -keep class com.google.android.material.appbar.AppBarLayout { <init>(android.content.Context, android.util.AttributeSet); } -keep class com.google.android.material.appbar.MaterialToolbar { <init>(android.content.Context, android.util.AttributeSet); } -keep class com.google.android.material.bottomnavigation.BottomNavigationView { <init>(android.content.Context, android.util.AttributeSet); } -keep class com.google.android.material.button.MaterialButton { <init>(android.content.Context, android.util.AttributeSet); } -keep class com.google.android.material.card.MaterialCardView { <init>(android.content.Context, android.util.AttributeSet); } -keep class com.google.android.material.checkbox.MaterialCheckBox { <init>(android.content.Context, android.util.AttributeSet); } -keep class com.google.android.material.chip.Chip { <init>(android.content.Context, android.util.AttributeSet); } -keep class com.google.android.material.chip.ChipGroup { <init>(android.content.Context, android.util.AttributeSet); } -keep class com.google.android.material.datepicker.MaterialCalendarGridView { <init>(android.content.Context, android.util.AttributeSet); } -keep class com.google.android.material.internal.BaselineLayout { <init>(android.content.Context, android.util.AttributeSet); } -keep class com.google.android.material.internal.CheckableImageButton { <init>(android.content.Context, android.util.AttributeSet); } -keep class com.google.android.material.internal.NavigationMenuItemView { <init>(android.content.Context, android.util.AttributeSet); } -keep class com.google.android.material.internal.NavigationMenuView { <init>(android.content.Context, android.util.AttributeSet); } -keep class com.google.android.material.snackbar.Snackbar$SnackbarLayout { <init>(android.content.Context, android.util.AttributeSet); } -keep class com.google.android.material.snackbar.SnackbarContentLayout { <init>(android.content.Context, android.util.AttributeSet); } -keep class com.google.android.material.tabs.TabLayout { <init>(android.content.Context, android.util.AttributeSet); } -keep class com.google.android.material.textfield.TextInputEditText { <init>(android.content.Context, android.util.AttributeSet); } -keep class com.google.android.material.textfield.TextInputLayout { <init>(android.content.Context, android.util.AttributeSet); } -keep class com.google.android.material.textview.MaterialTextView { <init>(android.content.Context, android.util.AttributeSet); } -keep class com.journeyapps.barcodescanner.BarcodeView { <init>(android.content.Context, android.util.AttributeSet); } -keep class com.journeyapps.barcodescanner.DecoratedBarcodeView { <init>(android.content.Context, android.util.AttributeSet); } -keep class com.journeyapps.barcodescanner.ViewfinderView { <init>(android.content.Context, android.util.AttributeSet); } -keep class com.mcxtzhang.swipemenulib.SwipeMenuLayout { <init>(android.content.Context, android.util.AttributeSet); } -keep class me.relex.circleindicator.CircleIndicator { <init>(android.content.Context, android.util.AttributeSet); } -keep class me.relex.circleindicator.CircleIndicator3 { <init>(android.content.Context, android.util.AttributeSet); } -keep class pl.droidsonroids.gif.GifImageView { <init>(android.content.Context, android.util.AttributeSet); } -keep class sg.ndi.activity.ContactUsActivity { <init>(...); } -keep class sg.ndi.activity.EmptyFragment { <init>(...); } -keep class sg.ndi.activity.RegistrationActivity { <init>(...); } -keep class sg.ndi.activity.StepByStepGuideActivity { <init>(...); } -keep class sg.ndi.activity.TutorialHolderActivity { <init>(...); } -keep class sg.ndi.fragment.AboutUsFragment { <init>(...); } -keep class sg.ndi.fragment.ChangePinFragment { <init>(...); } -keep class sg.ndi.fragment.CheckInFragment { <init>(...); } -keep class sg.ndi.fragment.CheckInLocationFragment { <init>(...); } -keep class sg.ndi.fragment.CheckInPassFragment { <init>(...); } -keep class sg.ndi.fragment.CheckInQrFragment { <init>(...); } -keep class sg.ndi.fragment.CheckInQrLocationFragment { <init>(...); } -keep class sg.ndi.fragment.CheckInWelcomeFragment { <init>(...); } -keep class sg.ndi.fragment.CheckOutFragment { <init>(...); } -keep class sg.ndi.fragment.ContactUsFragment { <init>(...); } -keep class sg.ndi.fragment.HomeFragment { <init>(...); } -keep class sg.ndi.fragment.InboxApiCallFragment { <init>(...); } -keep class sg.ndi.fragment.InboxCtaActionsDialogFragment { <init>(...); } -keep class sg.ndi.fragment.InboxFragment { <init>(...); } -keep class sg.ndi.fragment.InboxMessageFragment { <init>(...); } -keep class sg.ndi.fragment.ItemPurchaseLimitFragment { <init>(...); } -keep class sg.ndi.fragment.MyInfoBarcodeFragment { <init>(...); } -keep class sg.ndi.fragment.MyInfoDetailsFragment { <init>(...); } -keep class sg.ndi.fragment.MyInfoExplainerFragment { <init>(...); } -keep class sg.ndi.fragment.MyInfoFragment { <init>(...); } -keep class sg.ndi.fragment.MyInfoRearrangeCardFragment { <init>(...); } -keep class sg.ndi.fragment.MyInfoSelectSourceDialogFragment { <init>(...); } -keep class sg.ndi.fragment.MyInfoTutorialDialogFragment { <init>(...); } -keep class sg.ndi.fragment.PinVerifyFragment { <init>(...); } -keep class sg.ndi.fragment.QrScanFragment { <init>(...); } -keep class sg.ndi.fragment.ResetAppFragment { <init>(...); } -keep class sg.ndi.fragment.ResetDeviceFragment { <init>(...); } -keep class sg.ndi.fragment.SettingsFragment { <init>(...); } -keep class sg.ndi.fragment.ShareAppFragment { <init>(...); } -keep class sg.ndi.fragment.SimpleWebViewFragment { <init>(...); } -keep class sg.ndi.fragment.TutorialFragment { <init>(...); } -keep class sg.ndi.ndim.fragment.NDICertDetailsFragment { <init>(); } -keep class sg.ndi.ndim.fragment.NDICertDetailsFragment { <init>(...); } -keep class sg.ndi.ndim.fragment.NDICreatePinFragment { <init>(...); } -keep class sg.ndi.ndim.fragment.NDIDigitalIdentityDetailsFragment { <init>(...); } -keep class sg.ndi.ndim.fragment.NDIQuickActivationFragment { <init>(...); } -keep class sg.ndi.ndim.fragment.NDIQuickErrorFragment { <init>(...); } -keep class sg.ndi.ndim.fragment.NDIQuickExplainerFragment { <init>(...); } -keep class sg.ndi.ndim.fragment.NDIQuickNoticeFragment { <init>(...); } -keep class sg.ndi.ndim.fragment.NDIQuickProvisioningFragment { <init>(...); } -keep class sg.ndi.ndim.fragment.NDIQuickReminderFragment { <init>(...); } -keep class sg.ndi.ndim.fragment.NDITermsFragment { <init>(...); } -keep class sg.ndi.ndim.view.SpannableTextView { <init>(android.content.Context, android.util.AttributeSet); } -keep class sg.ndi.view.PinEntryEditText { <init>(android.content.Context, android.util.AttributeSet); } -keep class sg.ndi.view.RoundedCornerImageView { <init>(android.content.Context, android.util.AttributeSet); } -keep class sg.ndi.view.SilentSwitchCompat { <init>(android.content.Context, android.util.AttributeSet); } -keep class sg.ndi.view.TimerCircleView { <init>(android.content.Context, android.util.AttributeSet); } -keep class sg.ndi.view.TintableImageButton { <init>(android.content.Context, android.util.AttributeSet); } -keep class xyz.peridy.shimmerlayout.ShimmerLayout { <init>(android.content.Context, android.util.AttributeSet); } -dontwarn android.databinding.ViewDataBinding -dontwarn android.databinding.ViewDataBinding$LiveDataListener # instant apps load these via reflection so we need to keep them. -keep public class * extends android.databinding.DataBinderMapper # Add project specific ProGuard rules here. # You can control the set of applied configuration files using the # proguardFiles setting in build.gradle. # # For more details, see # http://developer.android.com/guide/developing/tools/proguard.html # If your project uses WebView with JS, uncomment the following # and specify the fully qualified class name to the JavaScript interface # class: #-keepclassmembers class fqcn.of.javascript.interface.for.webview { # public *; #} # Uncomment this to preserve the line number information for # debugging stack traces. #-keepattributes SourceFile,LineNumberTable # If you keep the line number information, uncomment this to # hide the original source file name. #-renamesourcefileattribute SourceFile #-keep,allowobfuscation class sg.ndi.security.DeviceCheck {*;} -keep class sg.ndi.security.NdiSecurity {*;} -keep class sg.ndi.security.SecureFile {*;} -keep class sg.ndi.security.SecurePreference {*;} -keep class sg.ndi.security.CipherClient {*;} -keep class sg.ndi.security.CipherCore {*;} -keep class sg.ndi.security.encrypt.AESEncryptor {*;} -keepclassmembers class * extends com.google.crypto.tink.shaded.protobuf.GeneratedMessageLite { <fields>; } # 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. # NavArgsLazy creates NavArgs instances using reflection -if public class ** implements androidx.navigation.NavArgs -keepclassmembers public class <1> { ** fromBundle(android.os.Bundle); } # 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. # setProgress is called via an ObjectAnimator in AbstractAppBarOnDestinationChangedListener -keepclassmembers class androidx.appcompat.graphics.drawable.DrawerArrowDrawable { void setProgress(float); } # 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. # CoordinatorLayout resolves the behaviors of its child components with reflection. -keep public class * extends androidx.coordinatorlayout.widget.CoordinatorLayout$Behavior { public <init>(android.content.Context, android.util.AttributeSet); public <init>(); } # Make sure we keep annotations for CoordinatorLayout's DefaultBehavior -keepattributes RuntimeVisible*Annotation* # 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. # AppCompatViewInflater reads the viewInflaterClass theme attribute which then # reflectively instantiates MaterialComponentsViewInflater using the no-argument # constructor. We only need to keep this constructor and the class name if # AppCompatViewInflater is also being kept. -if class androidx.appcompat.app.AppCompatViewInflater -keep class com.google.android.material.theme.MaterialComponentsViewInflater { <init>(); } # 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. # An inner class of RecyclerView is part of MaterialPickerDialogFragment.java -keep class androidx.recyclerview.widget.RecyclerView { *; } # 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. # Preference objects are inflated via reflection -keep public class androidx.preference.Preference { public <init>(android.content.Context, android.util.AttributeSet); } -keep public class * extends androidx.preference.Preference { public <init>(android.content.Context, android.util.AttributeSet); } # 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. # aapt is not able to read app::actionViewClass and app:actionProviderClass to produce proguard # keep rules. Add a commonly used SearchView to the keep list until b/109831488 is resolved. -keep class androidx.appcompat.widget.SearchView { <init>(...); } # Never inline methods, but allow shrinking and obfuscation. -keepclassmembernames,allowobfuscation,allowshrinking class androidx.appcompat.widget.AppCompatTextViewAutoSizeHelper$Impl* { <methods>; } # 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(); } -keep class * implements androidx.lifecycle.GeneratedAdapter {<init>(...);} # Top-level functions that can only be used by Kotlin. -dontwarn com.uber.autodispose.android.lifecycle.KotlinExtensions # Generated keep rule for Lifecycle observer adapter. -if class com.uber.autodispose.android.lifecycle.LifecycleEventsObservable.ArchLifecycleObserver { <init>(...); } -keep class com.uber.autodispose.android.lifecycle.LifecycleEventsObservable_ArchLifecycleObserver_LifecycleAdapter { <init>(...); } # Copyright 2018 The Chromium Authors. All rights reserved. # 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 *; } # 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. # Prevent WebViewClientCompat from being renamed, since chromium depends on this name. -keepnames public class androidx.webkit.WebViewClientCompat # Needed when app is not using OkHttp -dontwarn okio.** # Needed when app's compileSdkVersion < 24 -dontwarn com.google.firebase.perf.network.** # 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.firebase-perf.zzfi { <fields>; } # 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* # Ensure that proguard will not strip the handleIntent method. -keepclassmembers class com.google.android.gms.gcm.GcmListenerService { public void handleIntent(android.content.Intent); } # 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.measurement.zzfi { <fields>; } -dontwarn okio.** # These rules come from: # https://github.com/square/okhttp/blob/master/okhttp/src/main/resources/META-INF/proguard/okhttp3.pro # JSR 305 annotations are for embedding nullability information. -dontwarn javax.annotation.** # A resource is loaded with a relative path so the package of this class must be preserved. -keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase # Animal Sniffer compileOnly dependency to ensure APIs are compatible with older versions of Java. -dontwarn org.codehaus.mojo.animal_sniffer.* # OkHttp platform used only on JVM and when Conscrypt dependency is available. -dontwarn okhttp3.internal.platform.ConscryptPlatform # Copyright 2020 Google LLC # # 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 FirebaseCrashlytics from being obfuscated, because the Crashlytics # native libraries call FirebaseCrashlytics public methods dynamically via JNI. -keep public class com.google.firebase.crashlytics.FirebaseCrashlytics { public *; } # 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.measurement.zzfi { <fields>; } # 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.measurement.zzfi { <fields>; } # 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.measurement.zzfi { <fields>; } # 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. # CoordinatorLayout resolves the behaviors of its child components with reflection. -keep public class * extends androidx.coordinatorlayout.widget.CoordinatorLayout$Behavior { public <init>(android.content.Context, android.util.AttributeSet); public <init>(); } # Make sure we keep annotations for CoordinatorLayout's DefaultBehavior and ViewPager's DecorView -keepattributes *Annotation* -keep public class * implements com.bumptech.glide.module.GlideModule -keep class * extends com.bumptech.glide.module.AppGlideModule { <init>(...); } -keep public enum com.bumptech.glide.load.ImageHeaderParser$** { **[] $VALUES; public *; } # Uncomment for DexGuard only #-keepresourcexmlelements manifest/application/meta-data@value=GlideModule # 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*(); } -keep class * extends androidx.work.Worker -keep class * extends androidx.work.InputMerger # Keep all constructors on ListenableWorker, Worker (also marked with @Keep) -keep public class * extends androidx.work.ListenableWorker { public <init>(...); } # We need to keep WorkerParameters for the ListenableWorker constructor -keep class androidx.work.WorkerParameters -dontwarn com.evernote.android.state.** -keep class com.evernote.android.state.** { *; } -keep class **$$StateSaver { *; } # generated class names -keepclasseswithmembernames class * { @com.evernote.android.state.State <fields>;} -keepclasseswithmembernames class * { @com.evernote.android.state.StateReflection <fields>;} # only keep non-private fields, there must be a getter / setter for private fields #-keepclassmembers class * { # @com.evernote.android.state.State !private <fields>; #} # with reflection always keep the name of the field -keepclassmembers class * { @com.evernote.android.state.StateReflection <fields>;} # 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.firebase_auth.zzif { <fields>; } -dontwarn com.google.firebase.platforminfo.KotlinDetector # 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>; } # 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; } # 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.measurement.zzfi { <fields>; } # 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.measurement.zzfi { <fields>; } # 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 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>; } # 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.** # 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>(); } # 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; } # 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 *; } # Never inline methods, but allow shrinking and obfuscation. -keepclassmembernames,allowobfuscation,allowshrinking class androidx.core.view.ViewCompat$Api* { <methods>; } -keepclassmembernames,allowobfuscation,allowshrinking class androidx.core.view.WindowInsetsCompat$Impl* { <methods>; } -keepclassmembernames,allowobfuscation,allowshrinking class androidx.core.view.WindowInsetsCompat$BuilderImpl* { <methods>; } # this rule is need to work properly when app is compiled with api 28, see b/142778206 -keepclassmembers class * extends androidx.lifecycle.EmptyActivityLifecycleCallbacks { *; } -keepattributes *Annotation* -keepclassmembers enum androidx.lifecycle.Lifecycle$Event { <fields>; } -keep !interface * implements androidx.lifecycle.LifecycleObserver { } -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 -keepclassmembers class androidx.lifecycle.ReportFragment$LifecycleCallbacks { *; } -dontwarn com.google.errorprone.annotations.** -identifiernamestring class dagger.android.internal.AndroidInjectionKeys { java.lang.String of(java.lang.String); } -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); } # 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>(); } -keep class * extends androidx.room.RoomDatabase -dontwarn androidx.room.paging.** -keepclassmembers,allowobfuscation class * extends androidx.lifecycle.ViewModel { <init>(); } -keepclassmembers,allowobfuscation class * extends androidx.lifecycle.AndroidViewModel { <init>(android.app.Application); } -dontwarn com.google.firebase.components.Component$Instantiation -dontwarn com.google.firebase.components.Component$ComponentType -keep class * implements com.google.firebase.components.ComponentRegistrar -keep public class * implements androidx.versionedparcelable.VersionedParcelable -keep public class android.support.**Parcelizer { *; } -keep public class androidx.**Parcelizer { *; } -keep public class androidx.versionedparcelable.ParcelImpl -keep,allowobfuscation @interface androidx.annotation.Keep -keep @androidx.annotation.Keep class * {*;} -keepclasseswithmembers class * { @androidx.annotation.Keep <methods>; } -keepclasseswithmembers class * { @androidx.annotation.Keep <fields>; } -keepclasseswithmembers class * { @androidx.annotation.Keep <init>(...); } -dontwarn org.jetbrains.annotations.** -keep class com.github.ajalt.reprint.module.** { *; } -dontwarn com.samsung.** -keep class com.samsung.** {*;} # Top-level functions that can only be used by Kotlin. -dontwarn com.uber.autodispose.KotlinExtensions -dontwarn java.util.concurrent.Flow* # Retrofit does reflection on generic parameters. InnerClasses is required to use Signature and # EnclosingMethod is required to use InnerClasses. -keepattributes Signature, InnerClasses, EnclosingMethod # Retrofit does reflection on method and parameter annotations. -keepattributes RuntimeVisibleAnnotations, RuntimeVisibleParameterAnnotations # Retain service method parameters when optimizing. -keepclassmembers,allowshrinking,allowobfuscation interface * { @retrofit2.http.* <methods>; } # Ignore annotation used for build tooling. -dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement # Ignore JSR 305 annotations for embedding nullability information. -dontwarn javax.annotation.** # Guarded by a NoClassDefFoundError try/catch and only used when on the classpath. -dontwarn kotlin.Unit # Top-level functions that can only be used by Kotlin. -dontwarn retrofit2.KotlinExtensions -dontwarn retrofit2.KotlinExtensions$* # With R8 full mode, it sees no subtypes of Retrofit interfaces since they are created with a Proxy # and replaces all potential values with null. Explicitly keeping the interfaces prevents this. -if interface * { @retrofit2.http.* <methods>; } -keep,allowobfuscation interface <1> # JSR 305 annotations are for embedding nullability information. -dontwarn javax.annotation.** # A resource is loaded with a relative path so the package of this class must be preserved. -keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase # Animal Sniffer compileOnly dependency to ensure APIs are compatible with older versions of Java. -dontwarn org.codehaus.mojo.animal_sniffer.* # OkHttp platform used only on JVM and when Conscrypt dependency is available. -dontwarn okhttp3.internal.platform.ConscryptPlatform -keep class kotlin.reflect.jvm.internal.impl.builtins.BuiltInsLoaderImpl -keepclassmembers class kotlin.Metadata { public <methods>; } # JSR 305 annotations are for embedding nullability information. -dontwarn javax.annotation.** -keepclasseswithmembers class * { @com.squareup.moshi.* <methods>; } -keep @com.squareup.moshi.JsonQualifier interface * # Enum field names are used by the integrated EnumJsonAdapter. # values() is synthesized by the Kotlin compiler and is used by EnumJsonAdapter indirectly # Annotate enums with @JsonClass(generateAdapter = false) to use them with Moshi. -keepclassmembers @com.squareup.moshi.JsonClass class * extends java.lang.Enum { <fields>; **[] values(); } # The name of @JsonClass types is used to look up the generated adapter. -keepnames @com.squareup.moshi.JsonClass class * # Retain generated target class's synthetic defaults constructor and keep DefaultConstructorMarker's # name. We will look this up reflectively to invoke the type's constructor. # # We can't _just_ keep the defaults constructor because Proguard/R8's spec doesn't allow wildcard # matching preceding parameters. -keepnames class kotlin.jvm.internal.DefaultConstructorMarker -keepclassmembers @com.squareup.moshi.JsonClass @kotlin.Metadata class * { synthetic <init>(...); } # Retain generated JsonAdapters if annotated type is retained. -if @com.squareup.moshi.JsonClass class * -keep class <1>JsonAdapter { <init>(...); <fields>; } -if @com.squareup.moshi.JsonClass class **$* -keep class <1>_<2>JsonAdapter { <init>(...); <fields>; } -if @com.squareup.moshi.JsonClass class **$*$* -keep class <1>_<2>_<3>JsonAdapter { <init>(...); <fields>; } -if @com.squareup.moshi.JsonClass class **$*$*$* -keep class <1>_<2>_<3>_<4>JsonAdapter { <init>(...); <fields>; } -if @com.squareup.moshi.JsonClass class **$*$*$*$* -keep class <1>_<2>_<3>_<4>_<5>JsonAdapter { <init>(...); <fields>; } -if @com.squareup.moshi.JsonClass class **$*$*$*$*$* -keep class <1>_<2>_<3>_<4>_<5>_<6>JsonAdapter { <init>(...); <fields>; } # Animal Sniffer compileOnly dependency to ensure APIs are compatible with older versions of Java. -dontwarn org.codehaus.mojo.animal_sniffer.* # Add project specific ProGuard rules here. # You can edit the include path and order by changing the proguardFiles # directive in build.gradle. # # For more details, see # http://developer.android.com/guide/developing/tools/proguard.html # Many of the Conscrypt classes are referenced indirectly via JNI or # reflection. # This could probably be tightened up, but this will get it building for now. # TODO(kroot): Need anything special to prevent obfuscation? -keep class org.conscrypt.** { *; } # Backward compatibility code. -dontnote libcore.io.Libcore -dontnote org.apache.harmony.xnet.provider.jsse.OpenSSLRSAPrivateKey -dontnote org.apache.harmony.security.utils.AlgNameMapper -dontnote sun.security.x509.AlgorithmId -dontwarn dalvik.system.BlockGuard -dontwarn dalvik.system.BlockGuard$Policy -dontwarn dalvik.system.CloseGuard -dontwarn com.android.org.conscrypt.AbstractConscryptSocket -dontwarn com.android.org.conscrypt.ConscryptFileDescriptorSocket -dontwarn com.android.org.conscrypt.OpenSSLSocketImpl -dontwarn org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl -keep public class pl.droidsonroids.gif.GifIOException{<init>(int, java.lang.String);} #Prevents warnings for consumers not using AndroidX -dontwarn androidx.annotation.** # Keep class members used for serialization # https://www.guardsquare.com/en/products/proguard/manual/examples#serializable -keepclassmembers class org.threeten.bp.** implements java.io.Serializable { private static final java.io.ObjectStreamField[] serialPersistentFields; private void writeObject(java.io.ObjectOutputStream); private void readObject(java.io.ObjectInputStream); java.lang.Object writeReplace(); java.lang.Object readResolve(); } # # Copyright 2016 Google Inc. All rights reserved. # # 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 FlexboxLayoutManager may be set from a layout xml, in that situation the RecyclerView # tries to instantiate the layout manager using reflection. # This is to prevent the layout manager from being obfuscated. -keepnames public class com.google.android.flexbox.FlexboxLayoutManager # 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; } # ServiceLoader support -keepnames class kotlinx.coroutines.internal.MainDispatcherFactory {} -keepnames class kotlinx.coroutines.CoroutineExceptionHandler {} -keepnames class kotlinx.coroutines.android.AndroidExceptionPreHandler {} -keepnames class kotlinx.coroutines.android.AndroidDispatcherFactory {} # Most of volatile fields are updated with AFU and should not be mangled -keepclassmembernames class kotlinx.** { volatile <fields>; } # Same story for the standard library's SafeContinuation that also uses AtomicReferenceFieldUpdater -keepclassmembernames class kotlin.coroutines.SafeContinuation { volatile <fields>; } -keepclassmembers class org.threeten.bp.Ser { <init>(); } -ignorewarnings