TopGit theo dõi react-native-community/jsc-android-buildscripts trên GitHub, đã đạt 1.1k sao. Script for building JavaScriptCore for Android (for React Native but not only)
Tóm tắt dựng từ metadata GitHub của chính dự án — chưa có bài review TopGit. Trang sẽ tự động cập nhật khi bài review đầy đủ được xuất bản.
VÌ SAO CHƯA CÓ REVIEW
TopGit viết bài đầy đủ cho repo có nhiều sao nhất và được yêu cầu nhiều nhất. Trang này là snapshot trong thời gian chờ — xem README gốc ở tab READ ME.
The aim of this project is to provide maintainable build scripts for the JavaScriptCore JavaScript engine and allow the React Native project to incorporate up-to-date releases of JSC into the framework on Android.
This project is based on facebook/android-jsc but instead of rewriting JSC's build scripts into BUCK files, it relies on CMake build scripts maintained in a GTK branch of WebKit maintained by the WebKitGTK team (great work btw!). Thanks to that, with just a small amount of work we should be able to build not only current but also future releases of JSC. An obvious benefit for everyone using React Native is that this will allow us to update JSC for React Native on Android much more often than before (note that facebook/android-jsc uses JSC version from Nov 2014), which is especially helpful since React Native on iOS uses the built-in copy of JSC that is updated with each major iOS release (see this as a reference).
Requirements
Homebrew (https://brew.sh/)
GNU coreutils brew install coreutils
Node brew install node
Java 8: brew tap caskroom/versions && brew cask install java8
Android SDK: brew cask install android-sdk
Run sdkmanager --list and install all platforms, tools, buildtool v28.0.3, cmake (android images are not needed)
Set $ANDROID_HOME to the correct path (in ~/.bashrc or similar)
Set export PATH=$PATH:$ANDROID_HOME/platform-tools:$ANDROID_HOME/tools/bin
Android NDK r19c: download from NDK Archives
Set export ANDROID_NDK=/path/to/android-ndk-r19c
Make sure you have Ruby (>2.3), Python (>2.7), Git, gperf
Build instructions
Clone this repo
npm run clean will clean everything (artifacts, downloaded sources)
Update the version in package.json. The version will be printed by JSC lib as soon as it loads.
Update the config section under package.json to the desired build configuration
Update patches if needed (don't forget to update the printVersion patch in jsc.patch)
npm run download: downloads all needed sources
npm run start: builds jsc (this might take some time...)
The zipfile containing the android-jsc AAR will be available at /dist.
The library is packaged as a local Maven repository containing AAR files that include the binaries.
Distribution
JSC library built using this project is distributed over npm: npm/jsc-android.
The library is packaged as a local Maven repository containing AAR files that include the binaries.
Please refer to the section below in order to learn how your app can consume this format.
On load, JSC prints the version out to logcat, under "JavaScriptCore.Version" tag.
How to use it with my React Native app
Follow steps below in order for your React Native app to use new version of JSC VM on android:
For React Native version 0.60 and newer
Update jsc-android:
yarn add jsc-android
# Or if you would like to try latest version
# yarn add 'jsc-android@next'
You're done, rebuild your app and enjoy updated version of JSC on android!
For React Native version 0.59
Add jsc-android:
yarn add jsc-android
# Or if you would like to try latest version
# yarn add 'jsc-android@next'
Modify android/build.gradle file to add the new local maven repository packaged in the jsc-android package to the search path:
allprojects {
repositories {
mavenLocal()
jcenter()
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url "$rootDir/../node_modules/react-native/android"
}
+ maven {
+ // Local Maven repo containing AARs with JSC library built for Android
+ url "$rootDir/../node_modules/jsc-android/dist"
+ }
}
}
Update your app's build.gradle file located in android/app/build.gradle to add the JSC dependency. Please make sure the dependency is before the React Native dependency.
dependencies {
+ // Make sure to put android-jsc at the top
+ implementation "org.webkit:android-jsc:+"
+
compile fileTree(dir: "libs", include: ["*.jar"])
implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"
implementation "com.facebook.react:react-native:+" // From node_modules
}
Update your app's build.gradle file located in android/app/build.gradle to use first matched JSC library.
You're done - rebuild your app and enjoy the updated version of JSC on Android!
For React Native version 0.58 below
Add jsc-android:
yarn add jsc-android
# Or if you would like to try latest version
# yarn add 'jsc-android@next'
Modify android/build.gradle file to add new local maven repository packaged in the jsc-android package to the search path:
allprojects {
repositories {
mavenLocal()
jcenter()
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url "$rootDir/../node_modules/react-native/android"
}
+ maven {
+ // Local Maven repo containing AARs with JSC library built for Android
+ url "$rootDir/../node_modules/jsc-android/dist"
+ }
}
}
Update your app's build.gradle file located in android/app/build.gradle to force app builds to use new version of the JSC library as opposed to the version specified in react-native gradle module as a dependency:
You're done, rebuild your app and enjoy updated version of JSC on android!
International variant
International variant includes ICU i18n library and necessary data allowing to use e.g. Date.toLocaleString and String.localeCompare that give correct results when using with locales other than en-US. Note that this variant is about 6MiB larger per architecture than default.
To use this variant instead replace the third installation step with:
For React Native version 0.60 and newer, your build.gradle should have a flag to enable this feature.
/**
* Use the international variant of JavaScriptCore
* This variant includes the ICU i18n library to make APIs like `Date.toLocaleString`
* and `String.localeCompare` work when using with locales other than en-US.
* Note that this variant is about 6MiB larger per architecture than the default.
*/
- def useIntlJsc = false
+ def useIntlJsc = true
For React Native version 0.59, replace original artifact id with android-jsc-intl
dependencies {
+ // Make sure to put android-jsc at the the first
+ implementation "org.webkit:android-jsc-intl:+"
+
compile fileTree(dir: "libs", include: ["*.jar"])
implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"
implementation "com.facebook.react:react-native:+" // From node_modules
}
For React Native version 0.58 below, replace original resolutionStrategy with this.
Đọc thêm về react-native-community/jsc-android-buildscripts ở đâu?
Trang TopGit này là một snapshot — tab "Readme" hiển thị nguyên văn README của repo (đã bỏ link, giữ ảnh). Repo GitHub ở github.com/react-native-community/jsc-android-buildscripts là nguồn chính thức.
react-native-community/jsc-android-buildscripts có bao nhiêu sao?
react-native-community/jsc-android-buildscripts có 1.1k sao GitHub — tải lại trang để xem số mới nhất, hoặc xem trực tiếp github.com/react-native-community/jsc-android-buildscripts. TopGit phản chiếu số sao của GitHub nhưng không cam kết đến từng phút.
react-native-community/jsc-android-buildscripts có phải mã nguồn mở không?
Có — react-native-community/jsc-android-buildscripts phát hành theo license BSD-2-Clause, nghĩa là mã nguồn mở để đọc, fork và (tùy license) tái sử dụng. Mã: github.com/react-native-community/jsc-android-buildscripts.
react-native-community/jsc-android-buildscripts còn đang phát triển không?
Commit gần nhất trên react-native-community/jsc-android-buildscripts là 5 tháng trước (theo timestamp GitHub). Repo có 104 fork — một chỉ báo về mức độ quan tâm của cộng đồng.
react-native-community/jsc-android-buildscripts dùng license gì?
react-native-community/jsc-android-buildscripts phát hành theo license BSD-2-Clause. Nên mở file LICENSE trên GitHub để xác nhận — license metadata đôi khi lệch với thực tế dự án.
react-native-community/jsc-android-buildscripts là gì?
react-native-community/jsc-android-buildscripts (react-native-community/jsc-android-buildscripts) là dự án JavaScript trên GitHub. Theo mô tả gốc: Script for building JavaScriptCore for Android (for React Native but not only)
react-native-community/jsc-android-buildscripts viết bằng ngôn ngữ gì?
react-native-community/jsc-android-buildscripts chủ yếu viết bằng JavaScript. Trường "language" của GitHub dựa trên phần lớn byte ở nhánh mặc định.
Đọc đầy đủ README ở tab phía trên.
Chưa chắc jsc-android-buildscripts có hợp với bạn?
Để ChatGPT, Claude hoặc Perplexity tìm hiểu giúp — bấm bên dưới và xem AI nói gì về jsc-android-buildscripts.