Skip to content

Commit b470f03

Browse files
committed
chore: integrate jsc into example on android
1 parent 15b0d4b commit b470f03

File tree

8 files changed

+603
-5
lines changed

8 files changed

+603
-5
lines changed

example/android/app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,14 +63,14 @@ def enableProguardInReleaseBuilds = false
6363
* The preferred build flavor of JavaScriptCore (JSC)
6464
*
6565
* For example, to use the international variant, you can use:
66-
* `def jscFlavor = 'org.webkit:android-jsc-intl:+'`
66+
* `def jscFlavor = 'io.github.react-native-community:jsc-android-intl:2026004.+'`
6767
*
6868
* The international variant includes ICU i18n library and necessary data
6969
* allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that
7070
* give correct results when using with locales other than en-US. Note that
7171
* this variant is about 6MiB larger per architecture than default.
7272
*/
73-
def jscFlavor = 'org.webkit:android-jsc:+'
73+
def jscFlavor = 'io.github.react-native-community:jsc-android:2026004.+'
7474

7575
android {
7676
ndkVersion rootProject.ext.ndkVersion

example/android/app/src/main/java/com/jscexample/MainApplication.kt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,15 @@ import com.facebook.react.ReactApplication
66
import com.facebook.react.ReactHost
77
import com.facebook.react.ReactNativeHost
88
import com.facebook.react.ReactPackage
9+
import com.facebook.react.bridge.JavaScriptExecutorFactory
910
import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load
1011
import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost
1112
import com.facebook.react.defaults.DefaultReactNativeHost
13+
import com.facebook.react.modules.systeminfo.AndroidInfoHelpers
1214
import com.facebook.react.soloader.OpenSourceMergedSoMapping
1315
import com.facebook.soloader.SoLoader
16+
import io.github.reactnativecommunity.javascriptcore.JSCExecutorFactory
17+
import io.github.reactnativecommunity.javascriptcore.JSCRuntimeFactory
1418

1519
class MainApplication : Application(), ReactApplication {
1620

@@ -28,10 +32,13 @@ class MainApplication : Application(), ReactApplication {
2832

2933
override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED
3034
override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED
35+
36+
override fun getJavaScriptExecutorFactory(): JavaScriptExecutorFactory =
37+
JSCExecutorFactory(packageName, AndroidInfoHelpers.getFriendlyDeviceName())
3138
}
3239

3340
override val reactHost: ReactHost
34-
get() = getDefaultReactHost(applicationContext, reactNativeHost)
41+
get() = getDefaultReactHost(applicationContext, reactNativeHost, JSCRuntimeFactory())
3542

3643
override fun onCreate() {
3744
super.onCreate()

example/android/gradle.properties

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,6 @@ newArchEnabled=true
3636

3737
# Use this property to enable or disable the Hermes JS engine.
3838
# If set to false, you will be using JSC instead.
39-
hermesEnabled=true
39+
hermesEnabled=false
40+
41+
useThirdPartyJSC=true

example/android/settings.gradle

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,12 @@ extensions.configure(com.facebook.react.ReactSettingsExtension){ ex -> ex.autoli
44
rootProject.name = 'JSCExample'
55
include ':app'
66
includeBuild('../node_modules/@react-native/gradle-plugin')
7+
8+
includeBuild('../node_modules/react-native') {
9+
dependencySubstitution {
10+
substitute(module("com.facebook.react:react-android")).using(project(":packages:react-native:ReactAndroid"))
11+
substitute(module("com.facebook.react:react-native")).using(project(":packages:react-native:ReactAndroid"))
12+
substitute(module("com.facebook.react:hermes-android")).using(project(":packages:react-native:ReactAndroid:hermes-engine"))
13+
substitute(module("com.facebook.react:hermes-engine")).using(project(":packages:react-native:ReactAndroid:hermes-engine"))
14+
}
15+
}

example/package-lock.json

Lines changed: 221 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

example/package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
"ios": "react-native run-ios",
88
"lint": "eslint .",
99
"start": "react-native start",
10-
"test": "jest"
10+
"test": "jest",
11+
"postinstall": "patch-package"
1112
},
1213
"dependencies": {
1314
"react": "19.0.0",
@@ -29,6 +30,7 @@
2930
"@types/react-test-renderer": "^19.0.0",
3031
"eslint": "^8.19.0",
3132
"jest": "^29.6.3",
33+
"patch-package": "^8.0.0",
3234
"prettier": "2.8.8",
3335
"react-test-renderer": "19.0.0",
3436
"typescript": "5.0.4"

0 commit comments

Comments
 (0)