From 28291461a80db712c971b46381dce366f7ec65ad Mon Sep 17 00:00:00 2001 From: Andrei Shikov Date: Fri, 11 Mar 2022 09:16:01 -0800 Subject: [PATCH] Add @DoNotStrip to stop obfuscation of Fabric related classes Summary: Proguard seems to keep Fabric methods a bit differently from Redex, with method signature lookup with `MountItem` and `StateWrapperImpl` failing in release RNTester builds because of mangled names. Adding these annotations should keep the classes, ensuring lookup from native is correct. Changelog: [Internal] - Add DoNotStrip annotations to Fabric related classes Reviewed By: ryancat Differential Revision: D34726510 fbshipit-source-id: 0c1d8e1fabec75511942943b533ddd8b637a5e19 --- .../main/java/com/facebook/react/fabric/StateWrapperImpl.java | 1 + .../facebook/react/fabric/mounting/mountitems/MountItem.java | 2 ++ 2 files changed, 3 insertions(+) diff --git a/ReactAndroid/src/main/java/com/facebook/react/fabric/StateWrapperImpl.java b/ReactAndroid/src/main/java/com/facebook/react/fabric/StateWrapperImpl.java index dd3b74810ad..127e524774b 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/fabric/StateWrapperImpl.java +++ b/ReactAndroid/src/main/java/com/facebook/react/fabric/StateWrapperImpl.java @@ -24,6 +24,7 @@ import com.facebook.react.uimanager.StateWrapper; * the Bindings.cpp, where the pointer to the C++ event emitter is set. */ @SuppressLint("MissingNativeLoadLibrary") +@DoNotStrip public class StateWrapperImpl implements StateWrapper { static { FabricSoLoader.staticInit(); diff --git a/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/MountItem.java b/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/MountItem.java index 9bc3995a484..d966f5445e5 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/MountItem.java +++ b/ReactAndroid/src/main/java/com/facebook/react/fabric/mounting/mountitems/MountItem.java @@ -10,8 +10,10 @@ package com.facebook.react.fabric.mounting.mountitems; import androidx.annotation.AnyThread; import androidx.annotation.NonNull; import androidx.annotation.UiThread; +import com.facebook.proguard.annotations.DoNotStrip; import com.facebook.react.fabric.mounting.MountingManager; +@DoNotStrip public interface MountItem { /** Execute this {@link MountItem} into the operation queue received by parameter. */