From 68d4abf51bc07d187864bfbc4b4ad0b06e3d0d7d Mon Sep 17 00:00:00 2001 From: garv Date: Wed, 29 May 2024 02:22:24 +0530 Subject: [PATCH 1/2] Remove dependency on BridgeDevSupportManager DevLoadingModule was using BridgeDevSupportManager to initialize DevLoadingViewManager. This meant a lot of devsupport classes were included in the relase APK. This commit refactors DevLoadingModule to use only the DevSupportManager interface to mitigate the above problem. DevSupportManagerBase always creates an instance of DevLoadingViewManager, which is why it need not be initialized again in DevLoadingModule. Removing old related unused methods from BridgeDevSupportManager --- .../react/devsupport/BridgeDevSupportManager.java | 13 ------------- .../react/devsupport/DevSupportManagerBase.java | 6 +++++- .../react/devsupport/DisabledDevSupportManager.java | 6 ++++++ .../devsupport/interfaces/DevSupportManager.java | 2 ++ .../react/modules/devloading/DevLoadingModule.java | 12 +++--------- 5 files changed, 16 insertions(+), 23 deletions(-) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/BridgeDevSupportManager.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/BridgeDevSupportManager.java index 4d7110c91eb954..fdec95c5696193 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/BridgeDevSupportManager.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/BridgeDevSupportManager.java @@ -65,8 +65,6 @@ */ public final class BridgeDevSupportManager extends DevSupportManagerBase { private boolean mIsSamplingProfilerEnabled = false; - private ReactInstanceDevHelper mReactInstanceManagerHelper; - private @Nullable DevLoadingViewManager mDevLoadingViewManager; public BridgeDevSupportManager( Context applicationContext, @@ -91,9 +89,6 @@ public BridgeDevSupportManager( surfaceDelegateFactory, devLoadingViewManager); - mReactInstanceManagerHelper = reactInstanceManagerHelper; - mDevLoadingViewManager = devLoadingViewManager; - if (getDevSettings().isStartSamplingProfilerOnInit()) { // Only start the profiler. If its already running, there is an error if (!mIsSamplingProfilerEnabled) { @@ -133,14 +128,6 @@ public void onOptionSelected() { } } - public DevLoadingViewManager getDevLoadingViewManager() { - return mDevLoadingViewManager; - } - - public ReactInstanceDevHelper getReactInstanceManagerHelper() { - return mReactInstanceManagerHelper; - } - @Override protected String getUniqueTag() { return "Bridge"; diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java index 18c4dd093dba24..255145e051bf1b 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DevSupportManagerBase.java @@ -770,7 +770,11 @@ protected DevServerHelper getDevServerHelper() { return mDevServerHelper; } - protected ReactInstanceDevHelper getReactInstanceDevHelper() { + public DevLoadingViewManager getDevLoadingViewManager() { + return mDevLoadingViewManager; + } + + public ReactInstanceDevHelper getReactInstanceDevHelper() { return mReactInstanceDevHelper; } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DisabledDevSupportManager.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DisabledDevSupportManager.java index 4c965eba4437f5..13abdc09ca7af9 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DisabledDevSupportManager.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/DisabledDevSupportManager.java @@ -16,6 +16,7 @@ import com.facebook.react.bridge.ReadableArray; import com.facebook.react.common.SurfaceDelegate; import com.facebook.react.devsupport.interfaces.BundleLoadCallback; +import com.facebook.react.devsupport.interfaces.DevLoadingViewManager; import com.facebook.react.devsupport.interfaces.DevOptionHandler; import com.facebook.react.devsupport.interfaces.DevSplitBundleCallback; import com.facebook.react.devsupport.interfaces.DevSupportManager; @@ -127,6 +128,11 @@ public String getDownloadedJSBundleFile() { return null; } + @Override + public DevLoadingViewManager getDevLoadingViewManager() { + return null; + } + @Override public boolean hasUpToDateJSBundleInCache() { return false; diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/DevSupportManager.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/DevSupportManager.java index 5380de4a32df4e..d4495d8fc612ed 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/DevSupportManager.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/devsupport/interfaces/DevSupportManager.java @@ -66,6 +66,8 @@ public interface DevSupportManager extends JSExceptionHandler { String getDownloadedJSBundleFile(); + DevLoadingViewManager getDevLoadingViewManager(); + boolean hasUpToDateJSBundleInCache(); void reloadSettings(); diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/devloading/DevLoadingModule.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/devloading/DevLoadingModule.java index 4eaa3f2d0b9a34..7f616eeaf2bdc1 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/devloading/DevLoadingModule.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/devloading/DevLoadingModule.java @@ -13,8 +13,7 @@ import com.facebook.react.bridge.NativeModule; import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.UiThreadUtil; -import com.facebook.react.devsupport.BridgeDevSupportManager; -import com.facebook.react.devsupport.DefaultDevLoadingViewImplementation; +import com.facebook.react.devsupport.interfaces.DevSupportManager; import com.facebook.react.devsupport.interfaces.DevLoadingViewManager; import com.facebook.react.module.annotations.ReactModule; @@ -28,14 +27,9 @@ public class DevLoadingModule extends NativeDevLoadingViewSpec { public DevLoadingModule(ReactApplicationContext reactContext) { super(reactContext); mJSExceptionHandler = reactContext.getJSExceptionHandler(); - if (mJSExceptionHandler != null && mJSExceptionHandler instanceof BridgeDevSupportManager) { + if (mJSExceptionHandler != null && mJSExceptionHandler instanceof DevSupportManager) { mDevLoadingViewManager = - ((BridgeDevSupportManager) mJSExceptionHandler).getDevLoadingViewManager(); - mDevLoadingViewManager = - mDevLoadingViewManager != null - ? mDevLoadingViewManager - : new DefaultDevLoadingViewImplementation( - ((BridgeDevSupportManager) mJSExceptionHandler).getReactInstanceManagerHelper()); + ((DevSupportManager) mJSExceptionHandler).getDevLoadingViewManager(); } } From c370ea9dea0f4344ab884476cc4ade8c87f0f436 Mon Sep 17 00:00:00 2001 From: garv Date: Wed, 29 May 2024 02:23:46 +0530 Subject: [PATCH 2/2] Add null check on show() Adding a null check on show() in DevLoadingModule which seems to have been missed. --- .../facebook/react/modules/devloading/DevLoadingModule.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/devloading/DevLoadingModule.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/devloading/DevLoadingModule.java index 7f616eeaf2bdc1..ae4a91e21e0e71 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/devloading/DevLoadingModule.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/modules/devloading/DevLoadingModule.java @@ -40,7 +40,9 @@ public void showMessage(final String message, final Double color, final Double b new Runnable() { @Override public void run() { - mDevLoadingViewManager.showMessage(message); + if (mDevLoadingViewManager != null) { + mDevLoadingViewManager.showMessage(message); + } } }); }