From 717fade79ccf58ee9979c821bed21f6578d9f37f Mon Sep 17 00:00:00 2001 From: hristoterezov Date: Fri, 7 Sep 2018 14:27:44 -0500 Subject: [PATCH] ref(proguard): Create common proguard config. --- android/app/build.gradle | 2 +- android/app/proguard-rules-debug.pro | 90 +------------------------- android/app/proguard-rules-release.pro | 6 ++ android/app/proguard-rules.pro | 33 ++++------ 4 files changed, 21 insertions(+), 110 deletions(-) create mode 100644 android/app/proguard-rules-release.pro diff --git a/android/app/build.gradle b/android/app/build.gradle index 294f30b5b..61beb27ad 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -33,7 +33,7 @@ android { } release { minifyEnabled true - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules-release.pro' } } diff --git a/android/app/proguard-rules-debug.pro b/android/app/proguard-rules-debug.pro index 978e8c936..a11ba2b24 100644 --- a/android/app/proguard-rules-debug.pro +++ b/android/app/proguard-rules-debug.pro @@ -1,93 +1,5 @@ -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in /usr/local/Cellar/android-sdk/24.3.3/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 *; -#} +-include proguard-rules.pro # Disabling obfuscation is useful if you collect stack traces from production crashes # (unless you are using a system that supports de-obfuscate the stack traces). -dontobfuscate - -# React Native - -# Keep our interfaces so they can be used by other ProGuard rules. -# See http://sourceforge.net/p/proguard/bugs/466/ --keep,allowobfuscation @interface com.facebook.proguard.annotations.DoNotStrip --keep,allowobfuscation @interface com.facebook.proguard.annotations.KeepGettersAndSetters --keep,allowobfuscation @interface com.facebook.common.internal.DoNotStrip - -# Do not strip any method/class that is annotated with @DoNotStrip --keep @com.facebook.proguard.annotations.DoNotStrip class * --keep @com.facebook.common.internal.DoNotStrip class * --keepclassmembers class * { - @com.facebook.proguard.annotations.DoNotStrip *; - @com.facebook.common.internal.DoNotStrip *; -} - --keepclassmembers @com.facebook.proguard.annotations.KeepGettersAndSetters class * { - void set*(***); - *** get*(); -} - --keep class * extends com.facebook.react.bridge.JavaScriptModule { *; } --keep class * extends com.facebook.react.bridge.NativeModule { *; } --keepclassmembers,includedescriptorclasses class * { native ; } --keepclassmembers class * { @com.facebook.react.uimanager.UIProp ; } --keepclassmembers class * { @com.facebook.react.uimanager.annotations.ReactProp ; } --keepclassmembers class * { @com.facebook.react.uimanager.annotations.ReactPropGroup ; } - --keep class com.facebook.react.bridge.ModuleRegistryHolder { *; } --keep class com.facebook.react.bridge.CatalystInstanceImpl { *; } --keep class com.facebook.react.bridge.JavaScriptExecutor { *; } --keep class com.facebook.react.bridge.queue.NativeRunnable { *; } --keep class com.facebook.react.bridge.ExecutorToken { *; } --keep class com.facebook.react.bridge.ReadableType { *; } --keep class com.facebook.react.devsupport.** { *; } --dontwarn com.facebook.react.devsupport.** - --dontwarn com.facebook.react.** - -# TextLayoutBuilder uses a non-public Android constructor within StaticLayout. -# See libs/proxy/src/main/java/com/facebook/fbui/textlayoutbuilder/proxy for details. --dontwarn android.text.StaticLayout - -# okhttp - --keepattributes Signature --keepattributes *Annotation* --keep class okhttp3.** { *; } --keep interface okhttp3.** { *; } --dontwarn okhttp3.** --dontwarn com.squareup.okhttp.** - -# okio - --keep class sun.misc.Unsafe { *; } --dontwarn java.nio.file.* --dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement --dontwarn okio.** - -# FastImage - --keep public class com.dylanvann.fastimage.* {*;} --keep public class com.dylanvann.fastimage.** {*;} - --keep class org.webrtc.** { *; } - - --dontwarn com.google.appengine.** --dontwarn javax.servlet.** - - diff --git a/android/app/proguard-rules-release.pro b/android/app/proguard-rules-release.pro new file mode 100644 index 000000000..45f06f57f --- /dev/null +++ b/android/app/proguard-rules-release.pro @@ -0,0 +1,6 @@ +-include proguard-rules.pro + +# Crashlytics +-keepattributes *Annotation* +-keepattributes SourceFile,LineNumberTable +-keep public class * extends java.lang.Exception diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro index 451c2929c..579c3eab1 100644 --- a/android/app/proguard-rules.pro +++ b/android/app/proguard-rules.pro @@ -16,10 +16,6 @@ # public *; #} -# Disabling obfuscation is useful if you collect stack traces from production crashes -# (unless you are using a system that supports de-obfuscate the stack traces). -# -dontobfuscate - # React Native # Keep our interfaces so they can be used by other ProGuard rules. @@ -48,15 +44,6 @@ -keepclassmembers class * { @com.facebook.react.uimanager.annotations.ReactProp ; } -keepclassmembers class * { @com.facebook.react.uimanager.annotations.ReactPropGroup ; } --keep class com.facebook.react.bridge.ModuleRegistryHolder { *; } --keep class com.facebook.react.bridge.CatalystInstanceImpl { *; } --keep class com.facebook.react.bridge.JavaScriptExecutor { *; } --keep class com.facebook.react.bridge.queue.NativeRunnable { *; } --keep class com.facebook.react.bridge.ExecutorToken { *; } --keep class com.facebook.react.bridge.ReadableType { *; } --keep class com.facebook.react.devsupport.** { *; } --dontwarn com.facebook.react.devsupport.** - -dontwarn com.facebook.react.** # TextLayoutBuilder uses a non-public Android constructor within StaticLayout. @@ -70,7 +57,6 @@ -keep class okhttp3.** { *; } -keep interface okhttp3.** { *; } -dontwarn okhttp3.** --dontwarn com.squareup.okhttp.** # okio @@ -81,16 +67,23 @@ # FastImage --keep public class com.dylanvann.fastimage.* {*;} -keep public class com.dylanvann.fastimage.** {*;} +# We added the following when we switched minifyEnabled on. Probably because we +# ran the app and hit problems... + +-keep class com.facebook.react.bridge.CatalystInstanceImpl { *; } +-keep class com.facebook.react.bridge.ExecutorToken { *; } +-keep class com.facebook.react.bridge.JavaScriptExecutor { *; } +-keep class com.facebook.react.bridge.ModuleRegistryHolder { *; } +-keep class com.facebook.react.bridge.ReadableType { *; } +-keep class com.facebook.react.bridge.queue.NativeRunnable { *; } +-keep class com.facebook.react.devsupport.** { *; } -keep class org.webrtc.** { *; } - +-dontwarn com.facebook.react.devsupport.** -dontwarn com.google.appengine.** +-dontwarn com.squareup.okhttp.** -dontwarn javax.servlet.** -# Crashlytics --keepattributes *Annotation* --keepattributes SourceFile,LineNumberTable --keep public class * extends java.lang.Exception +# ^^^ We added the above when we switched minifyEnabled on.