diff --git a/android/src/main/java/com/reactlibrary/ReactContextBuilder.java b/android/src/main/java/com/reactlibrary/ReactContextBuilder.java index d14383c..14fedcf 100644 --- a/android/src/main/java/com/reactlibrary/ReactContextBuilder.java +++ b/android/src/main/java/com/reactlibrary/ReactContextBuilder.java @@ -18,6 +18,7 @@ import com.facebook.react.bridge.queue.ReactQueueConfigurationSpec; import com.facebook.react.devsupport.interfaces.DevSupportManager; import com.facebook.soloader.SoLoader; +import com.facebook.v8.reactexecutor.V8ExecutorFactory; import java.util.ArrayList; import java.util.concurrent.Callable; @@ -65,8 +66,19 @@ private JavaScriptExecutorFactory getJSExecutorFactory() { SoLoader.loadLibrary("jscexecutor"); return new JSCExecutorFactory(appName, deviceName); } catch (UnsatisfiedLinkError jscE) { - // Otherwise use Hermes - return new HermesExecutorFactory(); + // Otherwise try using hermes + try { + // we try whether we can start the hermes js executor. + // If it fails with an UnsatisfiedLinkError we know + // that it is not available. + JavaScriptExecutor hermes = new HermesExecutorFactory().create(); + // stop if we were successful + hermes.close(); + return new HermesExecutorFactory(); + } catch (UnsatisfiedLinkError|NoClassDefFoundError e) { + // try v8 + return new V8ExecutorFactory(); + } } } diff --git a/package.json b/package.json index 73233fc..842c4d7 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,8 @@ "android/", "ios/", "js/", - "index.js" + "index.js", + "react-native.config.js" ], "peerDependencies": { "react-native": ">=0.50.0"