205 lines
7.6 KiB
Groovy
205 lines
7.6 KiB
Groovy
apply plugin: "com.android.application"
|
|
apply plugin: "kotlin-android"
|
|
|
|
import com.android.build.OutputFile
|
|
|
|
project.ext.react = [
|
|
enableHermes: false, // clean and rebuild if changing
|
|
]
|
|
|
|
project.ext.vectoricons = [
|
|
iconFontNames: ['MaterialIcons.ttf']
|
|
]
|
|
|
|
apply from: "../../node_modules/react-native/react.gradle"
|
|
apply from: "../../node_modules/react-native-vector-icons/fonts.gradle"
|
|
|
|
def enableSeparateBuildPerCPUArchitecture = true
|
|
def enableProguardInReleaseBuilds = true
|
|
def jscFlavor = 'org.webkit:android-jsc:+'
|
|
def enableHermes = project.ext.react.get("enableHermes", false);
|
|
|
|
def reactNativeArchitectures() {
|
|
def value = project.getProperties().get("reactNativeArchitectures")
|
|
return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"]
|
|
}
|
|
|
|
android {
|
|
java {
|
|
sourceCompatibility = JavaVersion.VERSION_11
|
|
targetCompatibility = JavaVersion.VERSION_11
|
|
}
|
|
|
|
packagingOptions {
|
|
jniLibs {
|
|
pickFirsts += ['**/armeabi-v7a/libfolly_runtime.so', '**/x86/libfolly_runtime.so', '**/arm64-v8a/libfolly_runtime.so', '**/x86_64/libfolly_runtime.so']
|
|
}
|
|
}
|
|
ndkVersion rootProject.ext.ndkVersion
|
|
compileSdkVersion rootProject.ext.compileSdkVersion
|
|
|
|
defaultConfig {
|
|
applicationId "com.massive"
|
|
missingDimensionStrategy "RNNotifications.reactNativeVersion", "reactNative60"
|
|
minSdkVersion rootProject.ext.minSdkVersion
|
|
targetSdkVersion rootProject.ext.targetSdkVersion
|
|
versionCode 36037
|
|
versionName "1.11"
|
|
buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
|
|
|
|
if (isNewArchitectureEnabled()) {
|
|
externalNativeBuild {
|
|
ndkBuild {
|
|
arguments "APP_PLATFORM=android-21",
|
|
"APP_STL=c++_shared",
|
|
"NDK_TOOLCHAIN_VERSION=clang",
|
|
"GENERATED_SRC_DIR=$buildDir/generated/source",
|
|
"PROJECT_BUILD_DIR=$buildDir",
|
|
"REACT_ANDROID_DIR=$rootDir/../node_modules/react-native/ReactAndroid",
|
|
"REACT_ANDROID_BUILD_DIR=$rootDir/../node_modules/react-native/ReactAndroid/build",
|
|
"NODE_MODULES_DIR=$rootDir/../node_modules"
|
|
cFlags "-Wall", "-Werror", "-fexceptions", "-frtti", "-DWITH_INSPECTOR=1"
|
|
cppFlags "-std=c++17"
|
|
targets "massive_appmodules"
|
|
}
|
|
}
|
|
if (!enableSeparateBuildPerCPUArchitecture) {
|
|
ndk {
|
|
abiFilters (*reactNativeArchitectures())
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if (isNewArchitectureEnabled()) {
|
|
externalNativeBuild {
|
|
ndkBuild {
|
|
path "$projectDir/src/main/jni/Android.mk"
|
|
}
|
|
}
|
|
def reactAndroidProjectDir = project(':ReactAndroid').projectDir
|
|
def packageReactNdkDebugLibs = tasks.register("packageReactNdkDebugLibs", Copy) {
|
|
dependsOn(":ReactAndroid:packageReactNdkDebugLibsForBuck")
|
|
from("$reactAndroidProjectDir/src/main/jni/prebuilt/lib")
|
|
into("$buildDir/react-ndk/exported")
|
|
}
|
|
def packageReactNdkReleaseLibs = tasks.register("packageReactNdkReleaseLibs", Copy) {
|
|
dependsOn(":ReactAndroid:packageReactNdkReleaseLibsForBuck")
|
|
from("$reactAndroidProjectDir/src/main/jni/prebuilt/lib")
|
|
into("$buildDir/react-ndk/exported")
|
|
}
|
|
afterEvaluate {
|
|
preDebugBuild.dependsOn(packageReactNdkDebugLibs)
|
|
preReleaseBuild.dependsOn(packageReactNdkReleaseLibs)
|
|
|
|
configureNdkBuildRelease.dependsOn(preReleaseBuild)
|
|
configureNdkBuildDebug.dependsOn(preDebugBuild)
|
|
reactNativeArchitectures().each { architecture ->
|
|
tasks.findByName("configureNdkBuildDebug[${architecture}]")?.configure {
|
|
dependsOn("preDebugBuild")
|
|
}
|
|
tasks.findByName("configureNdkBuildRelease[${architecture}]")?.configure {
|
|
dependsOn("preReleaseBuild")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
splits {
|
|
abi {
|
|
reset()
|
|
enable enableSeparateBuildPerCPUArchitecture
|
|
universalApk false
|
|
include (*reactNativeArchitectures())
|
|
}
|
|
}
|
|
signingConfigs {
|
|
release {
|
|
if (project.hasProperty('MYAPP_UPLOAD_STORE_FILE')) {
|
|
storeFile file(MYAPP_UPLOAD_STORE_FILE)
|
|
storePassword MYAPP_UPLOAD_STORE_PASSWORD
|
|
keyAlias MYAPP_UPLOAD_KEY_ALIAS
|
|
keyPassword MYAPP_UPLOAD_KEY_PASSWORD
|
|
}
|
|
}
|
|
debug {
|
|
if (project.hasProperty('MYAPP_UPLOAD_STORE_FILE')) {
|
|
storeFile file(MYAPP_UPLOAD_STORE_FILE)
|
|
storePassword MYAPP_UPLOAD_STORE_PASSWORD
|
|
keyAlias MYAPP_UPLOAD_KEY_ALIAS
|
|
keyPassword MYAPP_UPLOAD_KEY_PASSWORD
|
|
}
|
|
}
|
|
}
|
|
buildTypes {
|
|
debug {
|
|
signingConfig signingConfigs.debug
|
|
}
|
|
release {
|
|
signingConfig signingConfigs.release
|
|
minifyEnabled enableProguardInReleaseBuilds
|
|
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
|
|
}
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
def work_version = "2.7.1"
|
|
|
|
implementation "androidx.work:work-runtime:$work_version"
|
|
implementation "androidx.work:work-runtime-ktx:$work_version"
|
|
implementation "androidx.work:work-rxjava2:$work_version"
|
|
androidTestImplementation "androidx.work:work-testing:$work_version"
|
|
implementation "androidx.work:work-multiprocess:$work_version"
|
|
implementation fileTree(dir: "libs", include: ["*.jar"])
|
|
implementation "com.facebook.react:react-native:+" // From node_modules
|
|
implementation "androidx.core:core-ktx:1.8.0"
|
|
implementation project(':react-native-sqlite-storage')
|
|
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0"
|
|
|
|
debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") {
|
|
exclude group:'com.facebook.fbjni'
|
|
}
|
|
|
|
debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") {
|
|
exclude group:'com.facebook.flipper'
|
|
exclude group:'com.squareup.okhttp3', module:'okhttp'
|
|
}
|
|
|
|
debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") {
|
|
exclude group:'com.facebook.flipper'
|
|
}
|
|
|
|
if (enableHermes) {
|
|
implementation("com.facebook.react:hermes-engine:+") { // From node_modules
|
|
exclude group:'com.facebook.fbjni'
|
|
}
|
|
} else {
|
|
implementation jscFlavor
|
|
}
|
|
}
|
|
|
|
if (isNewArchitectureEnabled()) {
|
|
configurations.all {
|
|
resolutionStrategy.dependencySubstitution {
|
|
substitute(module("com.facebook.react:react-native"))
|
|
.using(project(":ReactAndroid"))
|
|
.because("On New Architecture we're building React Native from source")
|
|
substitute(module("com.facebook.react:hermes-engine"))
|
|
.using(project(":ReactAndroid:hermes-engine"))
|
|
.because("On New Architecture we're building Hermes from source")
|
|
}
|
|
}
|
|
}
|
|
|
|
task copyDownloadableDepsToLibs(type: Copy) {
|
|
from configurations.implementation
|
|
into 'libs'
|
|
}
|
|
|
|
apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)
|
|
|
|
def isNewArchitectureEnabled() {
|
|
return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true"
|
|
}
|