|
|
@ -76,7 +76,8 @@ import com.android.build.OutputFile |
|
|
|
*/ |
|
|
|
|
|
|
|
project.ext.react = [ |
|
|
|
entryFile: "index.js" |
|
|
|
entryFile: "index.js", |
|
|
|
enableHermes: true, // clean and rebuild if changing |
|
|
|
] |
|
|
|
|
|
|
|
apply from: "../../node_modules/react-native/react.gradle" |
|
|
@ -98,13 +99,26 @@ def enableSeparateBuildPerCPUArchitecture = false |
|
|
|
def enableProguardInReleaseBuilds = false |
|
|
|
|
|
|
|
/** |
|
|
|
* Use international variant JavaScriptCore |
|
|
|
* 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. |
|
|
|
* The preferred build flavor of JavaScriptCore. |
|
|
|
* |
|
|
|
* For example, to use the international variant, you can use: |
|
|
|
* `def jscFlavor = 'org.webkit:android-jsc-intl:+'` |
|
|
|
* |
|
|
|
* The 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. |
|
|
|
*/ |
|
|
|
def jscFlavor = 'org.webkit:android-jsc:+' |
|
|
|
|
|
|
|
/** |
|
|
|
* Whether to enable the Hermes VM. |
|
|
|
* |
|
|
|
* This should be set on project.ext.react and mirrored here. If it is not set |
|
|
|
* on project.ext.react, JavaScript will not be compiled to Hermes Bytecode |
|
|
|
* and the benefits of using Hermes will therefore be sharply reduced. |
|
|
|
*/ |
|
|
|
def useIntlJsc = false |
|
|
|
def enableHermes = project.ext.react.get("enableHermes", true); |
|
|
|
|
|
|
|
android { |
|
|
|
compileSdkVersion rootProject.ext.compileSdkVersion |
|
|
@ -131,8 +145,11 @@ android { |
|
|
|
include "armeabi-v7a", "x86", "arm64-v8a", "x86_64" |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
buildTypes { |
|
|
|
release { |
|
|
|
// Caution! In production, you need to generate your own keystore file. |
|
|
|
// see https://facebook.github.io/react-native/docs/signed-apk-android. |
|
|
|
minifyEnabled enableProguardInReleaseBuilds |
|
|
|
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" |
|
|
|
} |
|
|
@ -148,18 +165,30 @@ android { |
|
|
|
output.versionCodeOverride = |
|
|
|
versionCodes.get(abi) * 1048576 + defaultConfig.versionCode |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
packagingOptions { |
|
|
|
pickFirst '**/armeabi-v7a/libc++_shared.so' |
|
|
|
pickFirst '**/x86/libc++_shared.so' |
|
|
|
pickFirst '**/arm64-v8a/libc++_shared.so' |
|
|
|
pickFirst '**/x86_64/libc++_shared.so' |
|
|
|
pickFirst '**/x86/libjsc.so' |
|
|
|
pickFirst '**/armeabi-v7a/libjsc.so' |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
dependencies { |
|
|
|
implementation fileTree(dir: "libs", include: ["*.jar"]) |
|
|
|
implementation "com.facebook.react:react-native:+" // From node_modules |
|
|
|
// JSC from node_modules |
|
|
|
if (useIntlJsc) { |
|
|
|
implementation 'org.webkit:android-jsc-intl:+' |
|
|
|
|
|
|
|
if (enableHermes) { |
|
|
|
def hermesPath = "../../node_modules/hermesvm/android/"; |
|
|
|
debugImplementation files(hermesPath + "hermes-debug.aar") |
|
|
|
releaseImplementation files(hermesPath + "hermes-release.aar") |
|
|
|
} else { |
|
|
|
implementation 'org.webkit:android-jsc:+' |
|
|
|
implementation jscFlavor |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|