From e154117f37cdae3f5a3161010d67d139a83ad0e5 Mon Sep 17 00:00:00 2001 From: Benjamin Jaeger Date: Fri, 7 Apr 2017 11:42:33 -0700 Subject: [PATCH] Add proguard rules to bridge BUCK Summary: prevents reflected classes from being stripped/obfuscated Depends on D4830910 Reviewed By: mhorowitz Differential Revision: D4835688 fbshipit-source-id: 5b85668f92ed4ae5cebc9902ec60f6d5d6299bd4 --- .../main/java/com/facebook/react/bridge/BUCK | 1 + .../com/facebook/react/bridge/reactnative.pro | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 ReactAndroid/src/main/java/com/facebook/react/bridge/reactnative.pro diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/BUCK b/ReactAndroid/src/main/java/com/facebook/react/bridge/BUCK index dfabde66926..0f67d30d358 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/bridge/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/BUCK @@ -21,6 +21,7 @@ android_library( react_native_dep("java/com/facebook/proguard/annotations:annotations"), react_native_dep("third-party/java/jsr-330:jsr-330"), ], + proguard_config = "reactnative.pro", visibility = [ "PUBLIC", ], diff --git a/ReactAndroid/src/main/java/com/facebook/react/bridge/reactnative.pro b/ReactAndroid/src/main/java/com/facebook/react/bridge/reactnative.pro new file mode 100644 index 00000000000..f5c925a42f6 --- /dev/null +++ b/ReactAndroid/src/main/java/com/facebook/react/bridge/reactnative.pro @@ -0,0 +1,19 @@ +-keepnames class * extends com.facebook.react.bridge.JavaScriptModule { *; } +-keepnames class * extends com.facebook.react.cxxbridge.CxxModuleWrapper {*; } +-keepclassmembers class * extends com.facebook.react.bridge.NativeModule { + @com.facebook.react.bridge.ReactMethod *; + public (...); +} + +-keepclassmembers class * { @com.facebook.react.uimanager.annotations.ReactProp ; } +-keepclassmembers class * { @com.facebook.react.uimanager.annotations.ReactPropGroup ; } +-keepnames class * extends com.facebook.react.uimanager.ViewManager +-keepnames class * extends com.facebook.react.uimanager.ReactShadowNode +-keep class **$$PropsSetter +-keep class **$$ReactModuleInfoProvider +-keep class com.facebook.react.bridge.ReadableType { *; } + +-keepnames class com.facebook.quicklog.QuickPerformanceLogger { + void markerAnnotate(int,int,java.lang.String,java.lang.String); + void markerTag(int,int,java.lang.String); +}