mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
If JSC fails to load when starting RN, expose that error to the caller
Summary: See the comments for more info. Changelog: [Android] [Changed] - Improve exception message when JSC loading fails Reviewed By: tmikov Differential Revision: D19917034 fbshipit-source-id: d846f542c31e9c94edcee240c2935d77d48d1f2a
This commit is contained in:
committed by
Facebook Github Bot
parent
ef021eac9c
commit
65d3167a80
@@ -297,8 +297,34 @@ public class ReactInstanceManagerBuilder {
|
||||
SoLoader.loadLibrary("jscexecutor");
|
||||
return new JSCExecutorFactory(appName, deviceName);
|
||||
} catch (UnsatisfiedLinkError jscE) {
|
||||
// https://github.com/facebook/hermes/issues/78 shows that
|
||||
// people who aren't trying to use Hermes are having issues.
|
||||
// https://github.com/facebook/react-native/issues/25923#issuecomment-554295179
|
||||
// includes the actual JSC error in at least one case.
|
||||
//
|
||||
// So, if "__cxa_bad_typeid" shows up in the jscE exception
|
||||
// message, then we will assume that's the failure and just
|
||||
// throw now.
|
||||
|
||||
if (jscE.getMessage().contains("__cxa_bad_typeid")) {
|
||||
throw jscE;
|
||||
}
|
||||
|
||||
// Otherwise use Hermes
|
||||
return new HermesExecutorFactory();
|
||||
try {
|
||||
return new HermesExecutorFactory();
|
||||
} catch (UnsatisfiedLinkError hermesE) {
|
||||
// If we get here, either this is a JSC build, and of course
|
||||
// Hermes failed (since it's not in the APK), or it's a Hermes
|
||||
// build, and Hermes had a problem.
|
||||
|
||||
// We suspect this is a JSC issue (it's the default), so we
|
||||
// will throw that exception, but we will print hermesE first,
|
||||
// since it could be a Hermes issue and we don't want to
|
||||
// swallow that.
|
||||
hermesE.printStackTrace();
|
||||
throw jscE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user