Last active
September 11, 2019 07:27
-
-
Save desmondmc/1fbd08ef1586b3bcdab68f27753a16b1 to your computer and use it in GitHub Desktop.
Hemes enabled build.gradle
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
apply plugin: "com.android.application" | |
import com.android.build.OutputFile | |
project.ext.react = [ | |
entryFile: "index.js", | |
enableHermes: true // clean and rebuild if changing | |
] | |
def jscFlavor = 'org.webkit:android-jsc:+' | |
def enableHermes = project.ext.react.get("enableHermes", true); | |
apply from: "../../node_modules/react-native/react.gradle" | |
/** | |
* Set this to true to create two separate APKs instead of one: | |
* - An APK that only works on ARM devices | |
* - An APK that only works on x86 devices | |
* The advantage is the size of the APK is reduced by about 4MB. | |
* Upload all the APKs to the Play Store and people will download | |
* the correct one based on the CPU architecture of their device. | |
*/ | |
def enableSeparateBuildPerCPUArchitecture = false | |
/** | |
* Run Proguard to shrink the Java bytecode in release builds. | |
*/ | |
def enableProguardInReleaseBuilds = false | |
android { | |
packagingOptions { | |
pickFirst '**/libjsc.so' | |
pickFirst '**/libc++_shared.so' | |
} | |
compileSdkVersion 28 | |
buildToolsVersion '28.0.3' | |
def versionPropsFile = file('version.properties') | |
def code = 1; | |
if (versionPropsFile.canRead()) { | |
def Properties versionProps = new Properties() | |
versionProps.load(new FileInputStream(versionPropsFile)) | |
List<String> runTasks = gradle.startParameter.getTaskNames(); | |
def value = 0 | |
for (String item : runTasks) | |
if ( item.contains("bundleRelease")) { | |
value = 1; | |
} | |
code = Integer.parseInt(versionProps['VERSION_CODE']).intValue() + value | |
versionProps['VERSION_CODE']=code.toString() | |
versionProps.store(versionPropsFile.newWriter(), null) | |
} | |
else { | |
throw new GradleException("Could not read version.properties!") | |
} | |
defaultConfig { | |
applicationId "com.myapp" | |
minSdkVersion rootProject.ext.minSdkVersion | |
targetSdkVersion rootProject.ext.targetSdkVersion | |
vectorDrawables.useSupportLibrary = true | |
versionCode code | |
versionName "1.8.0" | |
} | |
signingConfigs { | |
release { | |
// You need to specify either an absolute path or include the | |
// keystore file in the same directory as the build.gradle file. | |
storeFile file("-removed-from-gist") | |
storePassword "-removed-from-gist" | |
keyAlias "-removed-from-gist" | |
keyPassword "-removed-from-gist" | |
} | |
} | |
splits { | |
abi { | |
reset() | |
enable enableSeparateBuildPerCPUArchitecture | |
universalApk true // If true, also generate a universal APK | |
include "armeabi-v7a", "x86", "arm64-v8a" | |
} | |
} | |
buildTypes { | |
release { | |
signingConfig signingConfigs.release | |
minifyEnabled enableProguardInReleaseBuilds | |
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" | |
} | |
} | |
// applicationVariants are e.g. debug, release | |
applicationVariants.all { variant -> | |
variant.outputs.each { output -> | |
// For each separate APK per architecture, set a unique version code as described here: | |
// http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits | |
def versionCodes = ["armeabi-v7a":1, "x86":2, "arm64-v8a": 3] | |
def abi = output.getFilter(OutputFile.ABI) | |
if (abi != null) { // null for the universal-debug, universal-release variants | |
output.versionCodeOverride = | |
versionCodes.get(abi) * 1048576 + defaultConfig.versionCode | |
} | |
} | |
} | |
} | |
dependencies { | |
implementation fileTree(dir: "libs", include: ["*.jar"]) | |
implementation 'com.facebook.react:react-native:+' | |
if (enableHermes) { | |
def hermesPath = "../../node_modules/hermesvm/android/"; | |
debugImplementation files(hermesPath + "hermes-debug.aar") | |
releaseImplementation files(hermesPath + "hermes-release.aar") | |
} else { | |
implementation jscFlavor | |
} | |
implementation project(':react-native-image-marker') | |
implementation project(':react-native-device-info') | |
implementation project(':react-native-gesture-handler') | |
implementation project(':react-native-sound') | |
implementation project(':@react-native-community_async-storage') | |
implementation project(':react-native-keep-awake') | |
implementation project(':react-native-fs') | |
implementation project(':react-native-image-crop-picker') | |
implementation project(':react-native-amplitude-analytics') | |
implementation project(':react-native-linear-gradient') | |
implementation project(':react-native-video') | |
implementation project(':react-native-fast-image') | |
implementation "com.google.android.gms:play-services-gcm:16.1.0" | |
// Firebase dependencies | |
implementation project(':react-native-firebase') | |
implementation "com.google.android.gms:play-services-base:16.1.0" | |
implementation "com.google.firebase:firebase-core:16.0.9" | |
implementation "com.google.firebase:firebase-messaging:18.0.0" | |
implementation project(':react-native-haptic-feedback') | |
implementation project(':react-native-svg') | |
implementation fileTree(include: ['*.jar'], dir: 'libs') | |
implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}" | |
implementation 'com.amplitude:android-sdk:2.19.1' // native sdk of amplitude | |
implementation project(':react-native-amplitude-analytics') // our react-native module | |
// From node_modules | |
} | |
// Run this once to be able to run the application with BUCK | |
// puts all compile dependencies into folder libs for BUCK to use | |
task copyDownloadableDepsToLibs(type: Copy) { | |
from configurations.compile | |
into 'libs' | |
} | |
apply plugin: 'com.google.gms.google-services' // Google Play services Gradle plugin | |
// Used for autolinking https://github.com/react-native-community/cli/blob/master/docs/autolinking.md | |
apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment