From 1d3b39fa7c461273fec392f6771ee2ff0573bb7f Mon Sep 17 00:00:00 2001 From: Jacob Parker Date: Sat, 30 May 2020 15:24:19 +0100 Subject: [PATCH 1/3] Fix autolinking on android --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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" From 5edfe00fa4c37c85180a93a398ecb9a61bb771c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hanno=20G=C3=B6decke?= Date: Tue, 9 Jun 2020 21:53:32 +0200 Subject: [PATCH 2/3] Implemented fallback from jsc -> hermes -> v8 --- .../com/reactlibrary/ReactContextBuilder.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/android/src/main/java/com/reactlibrary/ReactContextBuilder.java b/android/src/main/java/com/reactlibrary/ReactContextBuilder.java index d14383c..9626041 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 e) { + // try v8 + return new V8ExecutorFactory(); + } } } From 9eb11646964854137bac08e18aa4886b1173954d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hanno=20G=C3=B6decke?= Date: Tue, 9 Jun 2020 22:38:05 +0200 Subject: [PATCH 3/3] Also catch NoClassDef Exception when requesting hermes --- android/src/main/java/com/reactlibrary/ReactContextBuilder.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/src/main/java/com/reactlibrary/ReactContextBuilder.java b/android/src/main/java/com/reactlibrary/ReactContextBuilder.java index 9626041..14fedcf 100644 --- a/android/src/main/java/com/reactlibrary/ReactContextBuilder.java +++ b/android/src/main/java/com/reactlibrary/ReactContextBuilder.java @@ -75,7 +75,7 @@ private JavaScriptExecutorFactory getJSExecutorFactory() { // stop if we were successful hermes.close(); return new HermesExecutorFactory(); - } catch (UnsatisfiedLinkError e) { + } catch (UnsatisfiedLinkError|NoClassDefFoundError e) { // try v8 return new V8ExecutorFactory(); }