From f11b5a9c7c36c89411bf1d624abc0b2b2e15f506 Mon Sep 17 00:00:00 2001 From: Alex Hunt Date: Tue, 22 Oct 2024 16:03:56 -0700 Subject: [PATCH] Configure unstable-react-profiling build mode (#47028) Summary: This is a mostly internal diff enabling us to selectively enable Fusebox in release builds (experimental). Changelog: [Internal] Differential Revision: D64110061 --- packages/react-native/ReactAndroid/build.gradle.kts | 1 + .../src/main/java/com/facebook/react/ReactNativeHost.java | 4 +++- .../java/com/facebook/react/common/build/ReactBuildConfig.kt | 4 ++++ .../main/java/com/facebook/react/runtime/ReactHostImpl.java | 2 +- .../ReactCommon/jsinspector-modern/InspectorFlags.cpp | 2 ++ 5 files changed, 11 insertions(+), 2 deletions(-) diff --git a/packages/react-native/ReactAndroid/build.gradle.kts b/packages/react-native/ReactAndroid/build.gradle.kts index 264bda8fce477c..4caae9d4d21a2b 100644 --- a/packages/react-native/ReactAndroid/build.gradle.kts +++ b/packages/react-native/ReactAndroid/build.gradle.kts @@ -495,6 +495,7 @@ android { buildConfigField("boolean", "IS_INTERNAL_BUILD", "false") buildConfigField("int", "EXOPACKAGE_FLAGS", "0") + buildConfigField("boolean", "UNSTABLE_ENABLE_FUSEBOX_RELEASE", "false") resValue("integer", "react_native_dev_server_port", reactNativeDevServerPort()) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactNativeHost.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactNativeHost.java index 332c7a6ddaee5e..039d3495da47c4 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactNativeHost.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/ReactNativeHost.java @@ -19,6 +19,7 @@ import com.facebook.react.common.SurfaceDelegate; import com.facebook.react.common.SurfaceDelegateFactory; import com.facebook.react.common.annotations.DeprecatedInNewArchitecture; +import com.facebook.react.common.build.ReactBuildConfig; import com.facebook.react.devsupport.DevSupportManagerFactory; import com.facebook.react.devsupport.interfaces.DevLoadingViewManager; import com.facebook.react.devsupport.interfaces.PausedInDebuggerOverlayManager; @@ -92,7 +93,8 @@ protected ReactInstanceManagerBuilder getBaseReactInstanceManagerBuilder() { ReactInstanceManager.builder() .setApplication(mApplication) .setJSMainModulePath(getJSMainModuleName()) - .setUseDeveloperSupport(getUseDeveloperSupport()) + .setUseDeveloperSupport( + getUseDeveloperSupport() || ReactBuildConfig.UNSTABLE_ENABLE_FUSEBOX_RELEASE) .setDevSupportManagerFactory(getDevSupportManagerFactory()) .setDevLoadingViewManager(getDevLoadingViewManager()) .setRequireActivity(getShouldRequireActivity()) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/common/build/ReactBuildConfig.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/common/build/ReactBuildConfig.kt index e166d9a39fb4ea..a799b8618a9871 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/common/build/ReactBuildConfig.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/common/build/ReactBuildConfig.kt @@ -23,4 +23,8 @@ public object ReactBuildConfig { @JvmField public val IS_INTERNAL_BUILD: Boolean = BuildConfig.IS_INTERNAL_BUILD @JvmField public val EXOPACKAGE_FLAGS: Int = BuildConfig.EXOPACKAGE_FLAGS + + /** [Experimental] Enable React Native DevTools in release builds. */ + @JvmField + public val UNSTABLE_ENABLE_FUSEBOX_RELEASE: Boolean = BuildConfig.UNSTABLE_ENABLE_FUSEBOX_RELEASE } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.java index a5732d3c893c13..c284ad172bb9b8 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/ReactHostImpl.java @@ -193,7 +193,7 @@ public ReactHostImpl( mUIExecutor = uiExecutor; mMemoryPressureRouter = new MemoryPressureRouter(context); mAllowPackagerServerAccess = allowPackagerServerAccess; - mUseDevSupport = useDevSupport; + mUseDevSupport = useDevSupport || ReactBuildConfig.UNSTABLE_ENABLE_FUSEBOX_RELEASE; if (devSupportManagerFactory == null) { devSupportManagerFactory = new DefaultDevSupportManagerFactory(); } diff --git a/packages/react-native/ReactCommon/jsinspector-modern/InspectorFlags.cpp b/packages/react-native/ReactCommon/jsinspector-modern/InspectorFlags.cpp index d71944064e5964..df98c005ec499d 100644 --- a/packages/react-native/ReactCommon/jsinspector-modern/InspectorFlags.cpp +++ b/packages/react-native/ReactCommon/jsinspector-modern/InspectorFlags.cpp @@ -44,6 +44,8 @@ const InspectorFlags::Values& InspectorFlags::loadFlagsAndAssertUnchanged() true, #elif defined(HERMES_ENABLE_DEBUGGER) ReactNativeFeatureFlags::fuseboxEnabledDebug(), +#elif defined(REACT_NATIVE_ENABLE_FUSEBOX_RELEASE) + true, #else ReactNativeFeatureFlags::fuseboxEnabledRelease(), #endif