Skip to content

Instantly share code, notes, and snippets.

@DickSmith
Created August 8, 2018 03:29
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save DickSmith/dcae00c3154bfd3f0a8e0e812ca264d6 to your computer and use it in GitHub Desktop.
Save DickSmith/dcae00c3154bfd3f0a8e0e812ca264d6 to your computer and use it in GitHub Desktop.
Proguard for NativeScript
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in /Users/dicksmith/Library/Android/sdk/tools/proguard/proguard-android.txt
# 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
# Add any project specific keep options here:
# 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
-dontobfuscate
#-dontoptimize
#-dontshrink
#-dontwarn **
-keepattributes *Annotation*, EnclosingMethod, Exceptions, InnerClasses, LineNumberTable, Signature, SourceFile
-keep public class * extends java.lang.Exception
######## Proguard warnings
-dontwarn javax.annotation.**
-dontwarn com.google.zxing.**
-dontwarn com.appsflyer.GcmInstanceIdListener
-dontwarn com.appsflyer.a
# TODO why now?
-dontwarn com.appsflyer.y
-dontwarn com.yalantis.ucrop.UCropFragment
######## Proguard notes
-dontnote **.internal.**
-dontnote com.appsflyer.a
-dontnote com.facebook.share.widget.**
-dontnote com.google.**.zz*
-dontnote com.google.android.gms.**
-dontnote com.google.ads.mediation.**
-dontnote com.flask.colorpicker.**
-dontnote retrofit2.*
######## Found at Runtime - better way to capture these?
-keep,includedescriptorclasses public class com.facebook.drawee.controller.AbstractDraweeController** { public *; }
-keep,includedescriptorclasses public class com.facebook.login.LoginResult** { public *; }
-keep,includedescriptorclasses public class com.google.android.gms.auth.api.signin.GoogleSignInResult** { public *; }
-keep,includedescriptorclasses public class com.google.android.gms.auth.api.signin.internal.** { public *; }
-keep,includedescriptorclasses public class com.google.android.gms.tasks.Task** { public *; }
-keep,includedescriptorclasses public class com.google.firebase.auth.internal.zze** { public *; }
-keep,includedescriptorclasses public class com.google.firebase.auth.internal.zzh** { public *; }
-keep,includedescriptorclasses public class com.google.firebase.auth.internal.zzk** { public *; }
######## android.support PKG search
######## android\.support\.(?!media\.ExifInterface|v4|v7)
-keep,includedescriptorclasses public class android.support.media.ExifInterface** { public *; }
-keep,includedescriptorclasses public class android.support.v4.app.ActivityCompat** { public *; }
-keep,includedescriptorclasses public class android.support.v4.app.NotificationCompat** { public *; }
-keep,includedescriptorclasses public class android.support.v4.content.ContextCompat** { public *; }
-keep,includedescriptorclasses public class android.support.v4.content.FileProvider** { public *; }
-keep,includedescriptorclasses public class android.support.v4.view.AccessibilityDelegateCompat** { public *; }
-keep,includedescriptorclasses public class android.support.v4.view.GestureDetectorCompat** { public *; }
-keep,includedescriptorclasses public class android.support.v4.view.NestedScrollingChild** { public *; }
-keep,includedescriptorclasses public class android.support.v4.view.NestedScrollingParent** { public *; }
-keep,includedescriptorclasses public class android.support.v4.view.PagerAdapter** { public *; }
-keep,includedescriptorclasses public class android.support.v4.view.ScrollingView** { public *; }
-keep,includedescriptorclasses public class android.support.v4.view.ViewCompat** { public *; }
-keep,includedescriptorclasses public class android.support.v4.view.ViewPager** { public *; }
-keep,includedescriptorclasses public class android.support.v4.view.ViewPropertyAnimatorCompat** { public *; }
-keep,includedescriptorclasses public class android.support.v4.view.accessibility.AccessibilityNodeInfoCompat** { public *; }
-keep,includedescriptorclasses public class android.support.v4.view.animation.PathInterpolatorCompat** { public *; }
-keep,includedescriptorclasses public class android.support.v4.widget.CompoundButtonCompat** { public *; }
-keep,includedescriptorclasses public class android.support.v4.widget.SwipeRefreshLayout** { public *; }
-keep,includedescriptorclasses public class android.support.v7.appcompat.R** { public *; }
-keep,includedescriptorclasses public class android.support.v7.widget.AppCompatTextView** { public *; }
-keep,includedescriptorclasses public class android.support.v7.widget.CardView** { public *; }
-keep,includedescriptorclasses public class android.support.v7.widget.GridLayoutManager** { public *; }
-keep,includedescriptorclasses public class android.support.v7.widget.LinearLayoutManager** { public *; }
-keep,includedescriptorclasses public class android.support.v7.widget.RecyclerView** { public *; }
-keep,includedescriptorclasses public class android.support.v7.widget.SearchView** { public *; }
-keep,includedescriptorclasses public class android.support.v7.widget.StaggeredGridLayoutManager** { public *; }
-keep,includedescriptorclasses public class android.support.v7.widget.Toolbar** { public *; }
# [] accessed
-keep,includedescriptorclasses public class android.support.v7.widget.AppCompatRadioButton** { public *; }
-keep,includedescriptorclasses public class android.support.v7.widget.AppCompatCheckBox** { public *; }
######## com.android.billingclient PKG search
######## com\.android\.billingclient\.(?!api\.BillingClient|api\.BillingFlowParams|api\.ConsumeResponseListener|api\.Purchase|api\.SkuDetails)
-keep,includedescriptorclasses public class com.android.billingclient.api.BillingClient** { public *; }
-keep,includedescriptorclasses public class com.android.billingclient.api.BillingFlowParams** { public *; }
-keep,includedescriptorclasses public class com.android.billingclient.api.ConsumeResponseListener** { public *; }
-keep,includedescriptorclasses public class com.android.billingclient.api.Purchase** { public *; }
-keep,includedescriptorclasses public class com.android.billingclient.api.SkuDetails** { public *; }
######## com.android.datetimepicker PKG search
######## com\.android\.datetimepicker\.(?!Callback|PickerManager)
-keep,includedescriptorclasses public class com.android.datetimepicker.Callback** { public *; }
-keep,includedescriptorclasses public class com.android.datetimepicker.PickerManager** { public *; }
######## com.facebook PKG search
########
-keep,includedescriptorclasses public class com.facebook.imagepipeline.animated.base.AnimatedDrawable** { public *; }
-keep,includedescriptorclasses public class com.facebook.imagepipeline.core.ImagePipeline** { public *; }
-keep,includedescriptorclasses public class com.facebook.imagepipeline.image.ImageInfo** { public *; }
-keep,includedescriptorclasses public class com.facebook.imagepipeline.request.ImageRequestBuilder** { public *; }
-keep,includedescriptorclasses public class com.facebook.drawee.backends.pipeline.Fresco** { public *; }
-keep,includedescriptorclasses public class com.facebook.drawee.controller.ControllerListener** { public *; }
-keep,includedescriptorclasses public class com.facebook.drawee.drawable.ProgressBarDrawable** { public *; }
-keep,includedescriptorclasses public class com.facebook.drawee.drawable.ScalingUtils** { public *; }
-keep,includedescriptorclasses public class com.facebook.drawee.generic.GenericDraweeHierarchyBuilder** { public *; }
-keep,includedescriptorclasses public class com.facebook.drawee.generic.RoundingParams** { public *; }
-keep,includedescriptorclasses public class com.facebook.drawee.view.SimpleDraweeView** { public *; }
-keep,includedescriptorclasses public class com.facebook.common.util.UriUtil** { public *; }
-keep,includedescriptorclasses public class com.facebook.FacebookSdk** { public *; }
-keep,includedescriptorclasses public class com.facebook.CallbackManager** { public *; }
-keep,includedescriptorclasses public class com.facebook.login.LoginManager** { public *; }
-keep,includedescriptorclasses public class com.facebook.FacebookCallback** { public *; }
######## com.google.android.gms PKG search
-keep,includedescriptorclasses public class com.google.android.gms.ads.AdListener** { public *; }
-keep,includedescriptorclasses public class com.google.android.gms.ads.AdRequest** { public *; }
-keep,includedescriptorclasses public class com.google.android.gms.ads.AdSize** { public *; }
-keep,includedescriptorclasses public class com.google.android.gms.ads.AdView** { public *; }
-keep,includedescriptorclasses public class com.google.android.gms.ads.MobileAds** { public *; }
-keep,includedescriptorclasses public class com.google.android.gms.ads.InterstitialAd** { public *; }
-keep,includedescriptorclasses public class com.google.android.gms.ads.mediation.admob.AdMobExtras** { public *; }
-keep,includedescriptorclasses public class com.google.android.gms.appinvite.AppInvite** { public *; }
-keep,includedescriptorclasses public class com.google.android.gms.auth.api.Auth** { public *; }
-keep,includedescriptorclasses public class com.google.android.gms.auth.api.signin.GoogleSignInOptions** { public *; }
-keep,includedescriptorclasses public class com.google.android.gms.common.ConnectionResult** { public *; }
-keep,includedescriptorclasses public class com.google.android.gms.common.GoogleApiAvailability** { public *; }
-keep,includedescriptorclasses public class com.google.android.gms.common.api.GoogleApiClient** { public *; }
-keep,includedescriptorclasses public class com.google.android.gms.tasks.OnCompleteListener** { public *; }
-keep,includedescriptorclasses public class com.google.android.gms.tasks.OnFailureListener** { public *; }
-keep,includedescriptorclasses public class com.google.android.gms.tasks.OnSuccessListener** { public *; }
######## com.google.firebase PKG search
-keep,includedescriptorclasses public class com.google.firebase.auth.EmailAuthProvider** { public *; }
-keep,includedescriptorclasses public class com.google.firebase.auth.FacebookAuthProvider** { public *; }
-keep,includedescriptorclasses public class com.google.firebase.auth.FirebaseAuth** { public *; }
-keep,includedescriptorclasses public class com.google.firebase.auth.GoogleAuthProvider** { public *; }
-keep,includedescriptorclasses public class com.google.firebase.auth.PhoneAuthProvider** { public *; }
-keep,includedescriptorclasses public class com.google.firebase.auth.UserProfileChangeRequest** { public *; }
-keep,includedescriptorclasses public class com.google.firebase.analytics.FirebaseAnalytics** { public *; }
-keep,includedescriptorclasses public class com.google.firebase.crash.FirebaseCrash** { public *; }
-keep,includedescriptorclasses public class com.google.firebase.database.ChildEventListener** { public *; }
-keep,includedescriptorclasses public class com.google.firebase.database.FirebaseDatabase** { public *; }
-keep,includedescriptorclasses public class com.google.firebase.database.ServerValue** { public *; }
-keep,includedescriptorclasses public class com.google.firebase.database.ValueEventListener** { public *; }
-keep,includedescriptorclasses public class com.google.firebase.dynamiclinks.FirebaseDynamicLinks** { public *; }
#-keep,includedescriptorclasses public class com.google.firebase.firestore.** { public *; }
-keep,includedescriptorclasses public class com.google.firebase.iid.FirebaseInstanceId** { public *; }
-keep,includedescriptorclasses public class com.google.firebase.messaging.FirebaseMessaging** { public *; }
-keep,includedescriptorclasses public class com.google.firebase.remoteconfig.FirebaseRemoteConfig** { public *; }
-keep,includedescriptorclasses public class com.google.firebase.storage.FirebaseStore** { public *; }
-keep,includedescriptorclasses public class com.google.firebase.storage.OnProgressListener** { public *; }
######## GSON
-keep,includedescriptorclasses public class !**.internal.**,com.google.gson.** { public *; }
########
-keep,includedescriptorclasses class com.tns.** { *; }
-keep,includedescriptorclasses public interface com.tns.** { *; }
### Your app's package name
-keep,includedescriptorclasses class com.YOUR_DOMAIN.** { !private *; }
-keep,includedescriptorclasses public interface com.YOUR_DOMAIN.** { *; }
########
-keep,includedescriptorclasses public class com.yalantis.ucrop.UCrop** { public *; }
########
-keep,includedescriptorclasses public class net.gotev.uploadservice.** { *; }
-keep,includedescriptorclasses public enum net.gotev.uploadservice.** { *; }
########
-keep,includedescriptorclasses public class com.pusher.client.** { public *; }
########
-keep,includedescriptorclasses class org.nativescript.** { !private *; }
######## Camera Plus
-keep,includedescriptorclasses public class io.nstudio.**
######## Telerik UI
-keep,includedescriptorclasses public class com.telerik.widget.list.CollapsibleGroupsBehavior** { public *; }
-keep,includedescriptorclasses public class com.telerik.widget.list.CurrentPositionChangeListener** { public *; }
-keep,includedescriptorclasses public class com.telerik.widget.list.DeckOfCardsLayoutManager** { public *; }
-keep,includedescriptorclasses public class com.telerik.widget.list.FadeItemAnimator** { public *; }
-keep,includedescriptorclasses public class com.telerik.widget.list.ItemReorderBehavior** { public *; }
#com.telerik.widget.list.ListView[^ABDGHIW]
-keep,includedescriptorclasses public class com.telerik.widget.list.ListView** { public *; }
-keep,includedescriptorclasses public class com.telerik.widget.list.LoadOnDemandBehavior** { public *; }
-keep,includedescriptorclasses public class com.telerik.widget.list.PerspectiveChangeInfo** { public *; }
-keep,includedescriptorclasses public class com.telerik.widget.list.RadListView** { public *; }
-keep,includedescriptorclasses public class com.telerik.widget.list.Re** { public *; }
-keep,includedescriptorclasses public class com.telerik.widget.list.Sc** { public *; }
-keep,includedescriptorclasses public class com.telerik.widget.list.Se** { public *; }
-keep,includedescriptorclasses public class com.telerik.widget.list.Sl** { public *; }
-keep,includedescriptorclasses public class com.telerik.widget.list.Sn** { public *; }
-keep,includedescriptorclasses public class com.telerik.widget.list.Sw** { public *; }
-keep,includedescriptorclasses public class com.telerik.android.primitives.** { public *; }
######## ShowCase CoachMarks
# removed since not used right now however may bring back in Spring 2018
# -keep,includedescriptorclasses public class com.github.amlcurran.showcaseview.** { public *; }
######## YouTube
-keep,includedescriptorclasses public class com.google.android.youtube.player.YouTubePlayer** { public *; }
######## ExoPlayer
-keep,includedescriptorclasses public class com.google.android.exoplayer2.DefaultLoadControl** { public *; }
-keep,includedescriptorclasses public class com.google.android.exoplayer2.ExoPlayer** { public *; }
-keep,includedescriptorclasses public class com.google.android.exoplayer2.Format** { public *; }
-keep,includedescriptorclasses public class com.google.android.exoplayer2.SimpleExoPlayer** { public *; }
-keep,includedescriptorclasses public class com.google.android.exoplayer2.extractor.DefaultExtractorsFactory** { public *; }
-keep,includedescriptorclasses public class com.google.android.exoplayer2.source.ExtractorMediaSource** { public *; }
-keep,includedescriptorclasses public class com.google.android.exoplayer2.source.MediaSource** { public *; }
-keep,includedescriptorclasses public class com.google.android.exoplayer2.source.MergingMediaSource** { public *; }
-keep,includedescriptorclasses public class com.google.android.exoplayer2.source.SingleSampleMediaSource** { public *; }
-keep,includedescriptorclasses public class com.google.android.exoplayer2.source.dash.DashMediaSource** { public *; }
-keep,includedescriptorclasses public class com.google.android.exoplayer2.source.hls.HlsMediaSource** { public *; }
-keep,includedescriptorclasses public class com.google.android.exoplayer2.source.smoothstreaming.SsMediaSource** { public *; }
-keep,includedescriptorclasses public class com.google.android.exoplayer2.trackselection.AdaptiveTrackSelection** { public *; }
-keep,includedescriptorclasses public class com.google.android.exoplayer2.trackselection.DefaultTrackSelector** { public *; }
-keep,includedescriptorclasses public class com.google.android.exoplayer2.ui.PlaybackControlView** { public *; }
-keep,includedescriptorclasses public class com.google.android.exoplayer2.ui.SubtitleView** { public *; }
-keep,includedescriptorclasses public class com.google.android.exoplayer2.upstream.DefaultBandwidthMeter** { public *; }
-keep,includedescriptorclasses public class com.google.android.exoplayer2.upstream.DefaultDataSourceFactory** { public *; }
-keep,includedescriptorclasses public class com.google.android.exoplayer2.util.Util** { public *; }
-keep,includedescriptorclasses public class com.google.android.exoplayer2.util.MimeTypes** { public *; }
######## Zendesk
-keep,includedescriptorclasses public class com.zendesk.sdk.feedback.ZendeskFeedbackConfiguration** { public *; }
-keep,includedescriptorclasses public class com.zendesk.sdk.feedback.ui.ContactZendeskActivity** { public *; }
-keep,includedescriptorclasses public class com.zendesk.sdk.model.access.AnonymousIdentity** { public *; }
-keep,includedescriptorclasses public class com.zendesk.sdk.model.access.JwtIdentity** { public *; }
-keep,includedescriptorclasses public class com.zendesk.sdk.model.helpcenter.SimpleArticle** { public *; }
-keep,includedescriptorclasses public class com.zendesk.sdk.network.impl.ZendeskConfig** { public *; }
-keep,includedescriptorclasses public class com.zendesk.sdk.support.SupportActivity** { public *; }
-keep,includedescriptorclasses public class com.zendesk.sdk.support.ViewArticleActivity** { public *; }
######## FeedPlugin
-keep,includedescriptorclasses public class com.tapadoo.alerter.Alerter** { public *; }
######## Plugins using Butterknife
# Retain generated class which implement Unbinder.
-keep public class * implements butterknife.Unbinder { public <init>(**, android.view.View); }
# Prevent obfuscation of types which use ButterKnife annotations since the simple name
# is used to reflectively look up the generated ViewBinding.
-keep class butterknife.*
-keepclasseswithmembernames class * { @butterknife.* <methods>; }
-keepclasseswithmembernames class * { @butterknife.* <fields>; }
######## AppsFlyer
-keep,includedescriptorclasses public class com.appsflyer.AppsFlyerLib** { public *; }
#-keep class com.crashlytics.** { *; }
#-dontwarn com.crashlytics.**
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment