mirror of
https://gitcode.com/GitHub_Trending/ji/jitsi-meet.git
synced 2025-12-30 11:22:31 +00:00
* This is a huge update, mostly because we updated Gradle on the Android side, which includes a more strict bundle process for third party modules. On iOS, even though new architecture is disabled, we had to be explicit about it because of this react native update and because some updated dependencies have it enabled by default and are using turbo modules which are not available, YET, in our project.
158 lines
4.0 KiB
Groovy
158 lines
4.0 KiB
Groovy
buildscript {
|
|
repositories {
|
|
google()
|
|
mavenCentral()
|
|
}
|
|
|
|
dependencies {
|
|
classpath "com.android.tools.build:gradle:$rootProject.ext.gradlePluginVersion"
|
|
}
|
|
namespace 'org.jitsi.meet.reactnativesdk'
|
|
}
|
|
|
|
def isNewArchitectureEnabled() {
|
|
return rootProject.hasProperty("newArchEnabled") && rootProject.getProperty("newArchEnabled") == "true"
|
|
}
|
|
|
|
apply plugin: 'com.android.library'
|
|
|
|
if (isNewArchitectureEnabled()) {
|
|
apply plugin: 'com.facebook.react'
|
|
}
|
|
|
|
def getExtOrDefault(name) {
|
|
return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties['JitsiMeetReactNative_' + name]
|
|
}
|
|
|
|
def getExtOrIntegerDefault(name) {
|
|
return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties['JitsiMeetReactNative_' + name]).toInteger()
|
|
}
|
|
|
|
android {
|
|
compileSdkVersion getExtOrIntegerDefault('compileSdkVersion')
|
|
|
|
defaultConfig {
|
|
minSdkVersion getExtOrIntegerDefault('minSdkVersion')
|
|
targetSdkVersion getExtOrIntegerDefault('targetSdkVersion')
|
|
buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
|
|
}
|
|
buildTypes {
|
|
release {
|
|
minifyEnabled false
|
|
}
|
|
}
|
|
|
|
lintOptions {
|
|
disable 'GradleCompatible'
|
|
}
|
|
|
|
compileOptions {
|
|
sourceCompatibility JavaVersion.VERSION_17
|
|
targetCompatibility JavaVersion.VERSION_17
|
|
}
|
|
}
|
|
|
|
repositories {
|
|
mavenCentral()
|
|
google()
|
|
|
|
def found = false
|
|
def defaultDir = null
|
|
def androidSourcesName = 'React Native sources'
|
|
|
|
if (rootProject.ext.has('reactNativeAndroidRoot')) {
|
|
defaultDir = rootProject.ext.get('reactNativeAndroidRoot')
|
|
} else {
|
|
defaultDir = new File(
|
|
projectDir,
|
|
'/../../../node_modules/react-native/android'
|
|
)
|
|
}
|
|
|
|
if (defaultDir.exists()) {
|
|
maven {
|
|
url defaultDir.toString()
|
|
name androidSourcesName
|
|
}
|
|
|
|
logger.info(":${project.name}:reactNativeAndroidRoot ${defaultDir.canonicalPath}")
|
|
found = true
|
|
} else {
|
|
def parentDir = rootProject.projectDir
|
|
|
|
1.upto(5, {
|
|
if (found) return true
|
|
parentDir = parentDir.parentFile
|
|
|
|
def androidSourcesDir = new File(
|
|
parentDir,
|
|
'node_modules/react-native'
|
|
)
|
|
|
|
def androidPrebuiltBinaryDir = new File(
|
|
parentDir,
|
|
'node_modules/react-native/android'
|
|
)
|
|
|
|
if (androidPrebuiltBinaryDir.exists()) {
|
|
maven {
|
|
url androidPrebuiltBinaryDir.toString()
|
|
name androidSourcesName
|
|
}
|
|
|
|
logger.info(":${project.name}:reactNativeAndroidRoot ${androidPrebuiltBinaryDir.canonicalPath}")
|
|
found = true
|
|
} else if (androidSourcesDir.exists()) {
|
|
maven {
|
|
url androidSourcesDir.toString()
|
|
name androidSourcesName
|
|
}
|
|
|
|
logger.info(":${project.name}:reactNativeAndroidRoot ${androidSourcesDir.canonicalPath}")
|
|
found = true
|
|
}
|
|
})
|
|
}
|
|
|
|
if (!found) {
|
|
throw new GradleException(
|
|
"${project.name}: unable to locate React Native android sources. " +
|
|
"Ensure you have you installed React Native as a dependency in your project and try again."
|
|
)
|
|
}
|
|
}
|
|
|
|
|
|
dependencies {
|
|
//noinspection GradleDynamicVersion
|
|
implementation "com.facebook.react:react-native:+"
|
|
implementation 'com.squareup.duktape:duktape-android:1.3.0'
|
|
implementation 'com.dropbox.core:dropbox-core-sdk:4.0.1'
|
|
implementation 'com.jakewharton.timber:timber:4.7.1'
|
|
// From node_modules
|
|
}
|
|
|
|
if (isNewArchitectureEnabled()) {
|
|
react {
|
|
jsRootDir = file("../")
|
|
libraryName = "JitsiMeetReactNative"
|
|
codegenJavaPackageName = "org.jitsi.meet.sdk"
|
|
}
|
|
}
|
|
|
|
// Copy sounds to assets directory
|
|
android.libraryVariants.all { def variant ->
|
|
def mergeAssetsTask = variant.mergeAssetsProvider.get()
|
|
def mergeResourcesTask = variant.mergeResourcesProvider.get()
|
|
mergeAssetsTask.doLast {
|
|
def assetsDir = mergeAssetsTask.outputDir.get()
|
|
def soundsDir = "${projectDir}/../sounds"
|
|
copy {
|
|
from("${soundsDir}")
|
|
include("*.wav")
|
|
include("*.mp3")
|
|
into("${assetsDir}/sounds")
|
|
}
|
|
}
|
|
}
|