diff --git a/ReactAndroid/src/main/java/com/facebook/react/BUCK b/ReactAndroid/src/main/java/com/facebook/react/BUCK index 6fcd3551c..1c925ed23 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/BUCK @@ -1,11 +1,7 @@ include_defs('//ReactAndroid/DEFS') -XREACT_SRCS = [ - 'XReactInstanceManager.java', - 'XReactInstanceManagerImpl.java', -] - DEPS = [ + react_native_target('java/com/facebook/react/cxxbridge:bridge'), react_native_target('java/com/facebook/react/bridge:bridge'), react_native_target('java/com/facebook/react/common:common'), react_native_target('java/com/facebook/react/devsupport:devsupport'), @@ -23,25 +19,13 @@ DEPS = [ android_library( name = 'react', - srcs = glob(['*.java'], excludes=XREACT_SRCS), + srcs = glob(['*.java']), deps = DEPS, visibility = [ 'PUBLIC', ], ) -android_library( - name = 'xreact', - srcs = XREACT_SRCS, - deps = DEPS + [ - ':react', - react_native_target('java/com/facebook/react/cxxbridge:bridge'), - ], - visibility = [ - 'PUBLIC', - ], -) - project_config( src_target = ':react', ) diff --git a/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java b/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java index 0784a6e94..519940241 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java @@ -195,6 +195,7 @@ public abstract class ReactInstanceManager { protected @Nullable Activity mCurrentActivity; protected @Nullable DefaultHardwareBackBtnHandler mDefaultHardwareBackBtnHandler; protected @Nullable RedBoxHandler mRedBoxHandler; + protected boolean mUseNewBridge; protected Builder() { } @@ -309,6 +310,11 @@ public abstract class ReactInstanceManager { return this; } + public Builder setUseNewBridge() { + mUseNewBridge = true; + return this; + } + /** * Instantiates a new {@link ReactInstanceManagerImpl}. * Before calling {@code build}, the following must be called: @@ -333,22 +339,41 @@ public abstract class ReactInstanceManager { mUIImplementationProvider = new UIImplementationProvider(); } - return new ReactInstanceManagerImpl( - Assertions.assertNotNull( - mApplication, - "Application property has not been set with this builder"), - mCurrentActivity, - mDefaultHardwareBackBtnHandler, - mJSBundleFile, - mJSMainModuleName, - mPackages, - mUseDeveloperSupport, - mBridgeIdleDebugListener, - Assertions.assertNotNull(mInitialLifecycleState, "Initial lifecycle state was not set"), - mUIImplementationProvider, - mNativeModuleCallExceptionHandler, - mJSCConfig, - mRedBoxHandler); + if (mUseNewBridge) { + return new XReactInstanceManagerImpl( + Assertions.assertNotNull( + mApplication, + "Application property has not been set with this builder"), + mCurrentActivity, + mDefaultHardwareBackBtnHandler, + mJSBundleFile, + mJSMainModuleName, + mPackages, + mUseDeveloperSupport, + mBridgeIdleDebugListener, + Assertions.assertNotNull(mInitialLifecycleState, "Initial lifecycle state was not set"), + mUIImplementationProvider, + mNativeModuleCallExceptionHandler, + mJSCConfig, + mRedBoxHandler); + } else { + return new ReactInstanceManagerImpl( + Assertions.assertNotNull( + mApplication, + "Application property has not been set with this builder"), + mCurrentActivity, + mDefaultHardwareBackBtnHandler, + mJSBundleFile, + mJSMainModuleName, + mPackages, + mUseDeveloperSupport, + mBridgeIdleDebugListener, + Assertions.assertNotNull(mInitialLifecycleState, "Initial lifecycle state was not set"), + mUIImplementationProvider, + mNativeModuleCallExceptionHandler, + mJSCConfig, + mRedBoxHandler); + } } } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/XReactInstanceManager.java b/ReactAndroid/src/main/java/com/facebook/react/XReactInstanceManager.java index b3ba638c5..548343fc6 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/XReactInstanceManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/XReactInstanceManager.java @@ -14,56 +14,9 @@ import com.facebook.react.uimanager.UIImplementationProvider; public abstract class XReactInstanceManager { /** - * Creates a builder that is capable of creating an instance of {@link XReactInstanceManagerImpl}. + * Creates a builder that is defaulted to using the new bridge. */ - public static Builder builder() { - return new Builder(); - } - - /** - * Builder class for {@link XReactInstanceManagerImpl} - */ - public static class Builder extends ReactInstanceManager.Builder { - /** - * Instantiates a new {@link ReactInstanceManagerImpl}. - * Before calling {@code build}, the following must be called: - * - */ - public ReactInstanceManager build() { - Assertions.assertCondition( - mUseDeveloperSupport || mJSBundleFile != null, - "JS Bundle File has to be provided when dev support is disabled"); - - Assertions.assertCondition( - mJSMainModuleName != null || mJSBundleFile != null, - "Either MainModuleName or JS Bundle File needs to be provided"); - - if (mUIImplementationProvider == null) { - // create default UIImplementationProvider if the provided one is null. - mUIImplementationProvider = new UIImplementationProvider(); - } - - return new XReactInstanceManagerImpl( - Assertions.assertNotNull( - mApplication, - "Application property has not been set with this builder"), - mCurrentActivity, - mDefaultHardwareBackBtnHandler, - mJSBundleFile, - mJSMainModuleName, - mPackages, - mUseDeveloperSupport, - mBridgeIdleDebugListener, - Assertions.assertNotNull(mInitialLifecycleState, "Initial lifecycle state was not set"), - mUIImplementationProvider, - mNativeModuleCallExceptionHandler, - mJSCConfig, - mRedBoxHandler); - } + public static ReactInstanceManager.Builder builder() { + return new ReactInstanceManager.Builder().setUseNewBridge(); } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/BUCK b/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/BUCK index feed57707..898715d89 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/cxxbridge/BUCK @@ -9,8 +9,8 @@ android_library( ], proguard_config = 'bridge.pro', deps = [ - '//libraries/fbcore/src/main/java/com/facebook/common/logging:logging', react_native_dep('java/com/facebook/systrace:systrace'), + react_native_dep('libraries/fbcore/src/main/java/com/facebook/common/logging:logging'), react_native_dep('libraries/soloader/java/com/facebook/soloader:soloader'), # TODO mhorowitz: # java/com/facebook/catalyst/js/react-native-github/ReactAndroid/src/main/java/com/facebook/react/bridge/