mirror of
https://gitcode.com/gh_mirrors/re/react-native-pushy.git
synced 2025-09-16 07:01:38 +08:00
159 lines
4.9 KiB
Groovy
159 lines
4.9 KiB
Groovy
int MILLIS_IN_MINUTE = 1000 * 60
|
|
int minutesSinceEpoch = System.currentTimeMillis() / MILLIS_IN_MINUTE
|
|
|
|
def safeExtGet(prop, fallback) {
|
|
rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
|
|
}
|
|
|
|
def isNewArchitectureEnabled() {
|
|
return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true"
|
|
}
|
|
|
|
def supportsNamespace() {
|
|
def parsed = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION.tokenize('.')
|
|
def major = parsed[0].toInteger()
|
|
def minor = parsed[1].toInteger()
|
|
|
|
// Namespace support was added in 7.3.0
|
|
if (major == 7 && minor >= 3) {
|
|
return true
|
|
}
|
|
|
|
return major >= 8
|
|
}
|
|
|
|
def checkProjectInfo() {
|
|
def hasExpoModulesCore = rootProject.subprojects.any { it.name == 'expo-modules-core' }
|
|
def packageJsonFile = new File(rootProject.projectDir.parentFile, 'package.json')
|
|
|
|
def hasExpoDependency = false
|
|
def projectVersion = '1.0.0' // Default version
|
|
|
|
if (packageJsonFile.exists()) {
|
|
def packageJson = new groovy.json.JsonSlurper().parseText(packageJsonFile.text)
|
|
projectVersion = packageJson.version ?: '1.0.0' // Get project version
|
|
|
|
// Check for expo dependency and version >= 50
|
|
String expoVersionString = packageJson.dependencies?.expo ?: packageJson.devDependencies?.expo
|
|
boolean expoVersionIsHighEnough = false
|
|
if (expoVersionString) {
|
|
try {
|
|
// Extract the first number sequence as the major version
|
|
def matcher = (expoVersionString =~ /(\d+)/)
|
|
if (matcher.find()) {
|
|
int majorVersion = matcher[0][0].toInteger()
|
|
if (majorVersion >= 50) {
|
|
expoVersionIsHighEnough = true
|
|
}
|
|
}
|
|
} catch (NumberFormatException e) {
|
|
// Handle error if version parsing fails, maybe log a warning
|
|
println "Warning: Could not parse Expo version string: ${expoVersionString}"
|
|
}
|
|
}
|
|
hasExpoDependency = expoVersionIsHighEnough // Update based on version check
|
|
}
|
|
|
|
def isExpo = hasExpoModulesCore && hasExpoDependency
|
|
|
|
// Return a map containing both pieces of information
|
|
return [isExpo: isExpo, version: projectVersion]
|
|
}
|
|
|
|
// Get project info map
|
|
def projectInfo = checkProjectInfo()
|
|
// Extract info into variables
|
|
def projectVersion = projectInfo.version
|
|
def expoProject = projectInfo.isExpo
|
|
|
|
apply plugin: 'com.android.library'
|
|
if (isNewArchitectureEnabled()) {
|
|
apply plugin: 'com.facebook.react'
|
|
}
|
|
|
|
if (expoProject) {
|
|
group = 'expo.modules.pushy'
|
|
version = projectVersion
|
|
|
|
def expoModulesCorePlugin = new File(project(":expo-modules-core").projectDir.absolutePath, "ExpoModulesCorePlugin.gradle")
|
|
apply from: expoModulesCorePlugin
|
|
applyKotlinExpoModulesCorePlugin()
|
|
// useExpoPublishing()
|
|
useCoreDependencies()
|
|
} else {
|
|
group = 'cn.reactnative.modules.update'
|
|
version = projectVersion
|
|
}
|
|
|
|
android {
|
|
if (supportsNamespace()) {
|
|
namespace "cn.reactnative.modules.update"
|
|
|
|
sourceSets {
|
|
main {
|
|
manifest.srcFile "src/main/AndroidManifestNew.xml"
|
|
}
|
|
}
|
|
}
|
|
compileSdkVersion safeExtGet('compileSdkVersion', 28)
|
|
buildToolsVersion safeExtGet('buildToolsVersion', '28.0.3')
|
|
defaultConfig {
|
|
minSdkVersion safeExtGet('minSdkVersion', 16)
|
|
targetSdkVersion safeExtGet('targetSdkVersion', 27)
|
|
versionCode 1
|
|
versionName "1.0"
|
|
consumerProguardFiles "proguard.pro"
|
|
buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
|
|
}
|
|
|
|
sourceSets {
|
|
main {
|
|
// let gradle pack the shared library into apk
|
|
jniLibs.srcDirs = ['./lib']
|
|
if (isNewArchitectureEnabled()) {
|
|
java.srcDirs += ['src/newarch']
|
|
} else {
|
|
java.srcDirs += ['src/oldarch']
|
|
}
|
|
|
|
if (expoProject) {
|
|
java.srcDirs += ['java/expo/modules/pushy']
|
|
} else {
|
|
java.exclude 'expo/modules/pushy/**'
|
|
}
|
|
}
|
|
}
|
|
|
|
buildTypes {
|
|
release {
|
|
resValue("string", "pushy_build_time", "${minutesSinceEpoch}")
|
|
}
|
|
debug {
|
|
resValue("string", "pushy_build_time", "0")
|
|
}
|
|
}
|
|
|
|
lintOptions {
|
|
abortOnError false
|
|
}
|
|
}
|
|
|
|
repositories {
|
|
maven {
|
|
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
|
|
url "$rootDir/../node_modules/react-native/android"
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
implementation 'com.facebook.react:react-native:+'
|
|
implementation 'com.fasterxml.jackson.core:jackson-databind:2.13.0'
|
|
}
|
|
if (isNewArchitectureEnabled()) {
|
|
react {
|
|
jsRootDir = file("../lib/")
|
|
libraryName = "update"
|
|
codegenJavaPackageName = "cn.reactnative.modules.update"
|
|
}
|
|
}
|