diff --git a/packages/expo-dev-menu/android/src/main/java/expo/modules/devmenu/DevMenuHost.kt b/packages/expo-dev-menu/android/src/main/java/expo/modules/devmenu/DevMenuHost.kt index 4c6b591d972d9..7c1c2b312b742 100644 --- a/packages/expo-dev-menu/android/src/main/java/expo/modules/devmenu/DevMenuHost.kt +++ b/packages/expo-dev-menu/android/src/main/java/expo/modules/devmenu/DevMenuHost.kt @@ -3,11 +3,16 @@ package expo.modules.devmenu import android.app.Application import android.content.Context import android.util.Log +import com.facebook.hermes.reactexecutor.HermesExecutorFactory import com.facebook.react.ReactInstanceManager import com.facebook.react.ReactNativeHost import com.facebook.react.bridge.JSIModulePackage +import com.facebook.react.bridge.JavaScriptExecutorFactory import com.facebook.react.devsupport.DevServerHelper +import com.facebook.react.jscexecutor.JSCExecutorFactory +import com.facebook.react.modules.systeminfo.AndroidInfoHelpers import com.facebook.react.shell.MainReactPackage +import com.facebook.soloader.SoLoader import expo.modules.devmenu.react.DevMenuReactInternalSettings import java.io.BufferedReader import java.io.FileNotFoundException @@ -37,6 +42,14 @@ class DevMenuHost(application: Application) : ReactNativeHost(application) { fun getContext(): Context = super.getApplication() + override fun getJavaScriptExecutorFactory(): JavaScriptExecutorFactory? { + SoLoader.init(application.applicationContext, /* native exopackage */ false) + if (SoLoader.getLibraryPath("libjsc.so") != null) { + return JSCExecutorFactory(application.packageName, AndroidInfoHelpers.getFriendlyDeviceName()) + } + return HermesExecutorFactory() + } + override fun createReactInstanceManager(): ReactInstanceManager { val reactInstanceManager = super.createReactInstanceManager() if (useDeveloperSupport) {