The aim of this project is to support V8 runtime for React Native. Designed as opt-in package, it should easy to integrate with existing React Native projects.
After installing it, you’ll need to adjust your build.gradle
files so that it includes the new runtime
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -161,11 +161,18 @@ android {
}
}
}
+
+ packagingOptions {
+ // Make sure libjsc.so does not packed in APK
+ exclude "**/libjsc.so"
+ }
}
dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation "com.facebook.react:react-native:+" // From node_modules
+ // Add v8-android - prebuilt libv8android.so into APK
+ implementation 'org.chromium:v8-android:+'
// JSC from node_modules
if (useIntlJsc) {
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -24,8 +24,12 @@ allprojects {
repositories {
mavenLocal()
maven {
- // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
- url("$rootDir/../node_modules/react-native/android")
+ // Replace AAR from original RN with AAR from react-native-v8
+ url("$rootDir/../node_modules/react-native-v8/dist")
+ }
+ maven {
+ // prebuilt libv8android.so
+ url("$rootDir/../node_modules/v8-android/dist")
}
maven {
// Android JSC is installed from npm
And yes, it’s performant (even when compared to Hermes)