From 5f5adc3fa84c938ad4ba26b8c9c5dfd1bdc10613 Mon Sep 17 00:00:00 2001 From: hristoterezov Date: Thu, 6 Sep 2018 14:22:45 -0500 Subject: [PATCH] feat(proguard): enable --- android/app/build.gradle | 6 +- android/app/proguard-rules-debug.pro | 93 ++++++++++++++++++++++++++++ android/app/proguard-rules.pro | 19 +++++- 3 files changed, 116 insertions(+), 2 deletions(-) create mode 100644 android/app/proguard-rules-debug.pro diff --git a/android/app/build.gradle b/android/app/build.gradle index 9afd235a7d..294f30b5b6 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -27,8 +27,12 @@ android { } buildTypes { + debug { + minifyEnabled true + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules-debug.pro' + } release { - minifyEnabled false + minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } diff --git a/android/app/proguard-rules-debug.pro b/android/app/proguard-rules-debug.pro new file mode 100644 index 0000000000..978e8c936d --- /dev/null +++ b/android/app/proguard-rules-debug.pro @@ -0,0 +1,93 @@ +# 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 *; +#} + +# 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.pro b/android/app/proguard-rules.pro index c5c4286482..57a1654a0a 100644 --- a/android/app/proguard-rules.pro +++ b/android/app/proguard-rules.pro @@ -18,7 +18,7 @@ # 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 +# -dontobfuscate # React Native @@ -48,6 +48,15 @@ -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. @@ -61,6 +70,7 @@ -keep class okhttp3.** { *; } -keep interface okhttp3.** { *; } -dontwarn okhttp3.** +-dontwarn com.squareup.okhttp.** # okio @@ -74,3 +84,10 @@ -keep public class com.dylanvann.fastimage.* {*;} -keep public class com.dylanvann.fastimage.** {*;} +-keep class org.webrtc.** { *; } + + +-dontwarn com.google.appengine.** +-dontwarn javax.servlet.** + +