mirror of
https://gitcode.com/GitHub_Trending/ji/jitsi-meet.git
synced 2026-09-09 10:48:40 +00:00
On Android the files will be copied to the assets/sounds directory of the SDK bundle on build time. To play the "asset:/" prefix has to be used to locate the files correctly. On iOS each sound file must be added to the SDK's Xcode project in order to be bundled correctly. To playback we need to know the path of the SDK bundle which is now exposed by the AppInfo iOS module.
184 lines
7.1 KiB
Groovy
184 lines
7.1 KiB
Groovy
apply plugin: 'com.android.library'
|
|
apply plugin: 'maven-publish'
|
|
|
|
android {
|
|
compileSdkVersion rootProject.ext.compileSdkVersion
|
|
|
|
defaultConfig {
|
|
minSdkVersion rootProject.ext.minSdkVersion
|
|
targetSdkVersion rootProject.ext.targetSdkVersion
|
|
}
|
|
|
|
buildTypes {
|
|
debug {}
|
|
release {
|
|
minifyEnabled false
|
|
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
|
}
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
compile fileTree(dir: 'libs', include: ['*.jar'])
|
|
|
|
compile 'com.android.support:appcompat-v7:27.0.2'
|
|
compile 'com.facebook.react:react-native:+'
|
|
|
|
compile project(':react-native-background-timer')
|
|
compile project(':react-native-fetch-blob')
|
|
compile project(':react-native-immersive')
|
|
compile project(':react-native-keep-awake')
|
|
compile project(':react-native-locale-detector')
|
|
compile project(':react-native-sound')
|
|
compile project(':react-native-vector-icons')
|
|
compile project(':react-native-webrtc')
|
|
compile project(':react-native-calendar-events')
|
|
|
|
testCompile 'junit:junit:4.12'
|
|
}
|
|
|
|
// Build process helpers
|
|
//
|
|
|
|
void runBefore(String dependentTaskName, Task task) {
|
|
Task dependentTask = tasks.findByPath(dependentTaskName);
|
|
if (dependentTask != null) {
|
|
dependentTask.dependsOn task
|
|
}
|
|
}
|
|
|
|
gradle.projectsEvaluated {
|
|
android.buildTypes.all { buildType ->
|
|
def buildNameCapitalized = "${buildType.name.capitalize()}"
|
|
def bundlePath = "${buildDir}/intermediates/bundles/${buildType.name}"
|
|
|
|
// Bundle fonts in react-native-vector-icons.
|
|
//
|
|
|
|
def currentFontTask = tasks.create(
|
|
name: "copy${buildNameCapitalized}Fonts",
|
|
type: Copy) {
|
|
from("${projectDir}/../../fonts/jitsi.ttf")
|
|
from("${projectDir}/../../node_modules/react-native-vector-icons/Fonts/")
|
|
into("${bundlePath}/assets/fonts")
|
|
}
|
|
|
|
currentFontTask.dependsOn("merge${buildNameCapitalized}Resources")
|
|
currentFontTask.dependsOn("merge${buildNameCapitalized}Assets")
|
|
|
|
runBefore("processArmeabi-v7a${buildNameCapitalized}Resources", currentFontTask)
|
|
runBefore("processX86${buildNameCapitalized}Resources", currentFontTask)
|
|
runBefore("processUniversal${buildNameCapitalized}Resources", currentFontTask)
|
|
runBefore("process${buildNameCapitalized}Resources", currentFontTask)
|
|
|
|
def currentSoundsTask = tasks.create(
|
|
name: "copy${buildNameCapitalized}Sounds",
|
|
type: Copy) {
|
|
from("${projectDir}/../../sounds/joined.wav")
|
|
from("${projectDir}/../../sounds/left.wav")
|
|
into("${bundlePath}/assets/sounds")
|
|
}
|
|
|
|
currentSoundsTask.dependsOn("merge${buildNameCapitalized}Resources")
|
|
currentSoundsTask.dependsOn("merge${buildNameCapitalized}Assets")
|
|
|
|
runBefore("processArmeabi-v7a${buildNameCapitalized}Resources", currentSoundsTask)
|
|
runBefore("processX86${buildNameCapitalized}Resources", currentSoundsTask)
|
|
runBefore("processUniversal${buildNameCapitalized}Resources", currentSoundsTask)
|
|
runBefore("process${buildNameCapitalized}Resources", currentSoundsTask)
|
|
|
|
// Bundle JavaScript and React resources.
|
|
// (adapted from react-native/react.gradle)
|
|
//
|
|
|
|
// React JS bundle directories
|
|
def jsBundleDir = file("${bundlePath}/assets")
|
|
def resourcesDir = file("${bundlePath}/res/merged")
|
|
def jsBundleFile = file("${jsBundleDir}/index.android.bundle")
|
|
|
|
// Bundle task name for variant.
|
|
def bundleJsAndAssetsTaskName = "bundle${buildNameCapitalized}JsAndAssets"
|
|
|
|
def currentBundleTask = tasks.create(
|
|
name: bundleJsAndAssetsTaskName,
|
|
type: Exec) {
|
|
// Set up inputs and outputs so gradle can cache the result.
|
|
def reactRoot = file("${projectDir}/../../")
|
|
inputs.files fileTree(dir: reactRoot, excludes: ['android/**', 'ios/**'])
|
|
outputs.dir jsBundleDir
|
|
outputs.dir resourcesDir
|
|
|
|
// Set up the call to the react-native cli.
|
|
workingDir reactRoot
|
|
|
|
// Create JS bundle
|
|
def devEnabled = !buildNameCapitalized.toLowerCase().contains('release')
|
|
commandLine(
|
|
'node',
|
|
'node_modules/react-native/local-cli/cli.js',
|
|
'bundle',
|
|
'--assets-dest', resourcesDir,
|
|
'--bundle-output', jsBundleFile,
|
|
'--dev', "${devEnabled}",
|
|
'--entry-file', 'index.android.js',
|
|
'--platform', 'android',
|
|
'--reset-cache')
|
|
|
|
// Disable bundling on dev builds
|
|
enabled !devEnabled
|
|
}
|
|
|
|
// Hook bundle${productFlavor}${buildType}JsAndAssets into the android build process
|
|
currentBundleTask.dependsOn("merge${buildNameCapitalized}Resources")
|
|
currentBundleTask.dependsOn("merge${buildNameCapitalized}Assets")
|
|
|
|
runBefore("processArmeabi-v7a${buildNameCapitalized}Resources", currentBundleTask)
|
|
runBefore("processX86${buildNameCapitalized}Resources", currentBundleTask)
|
|
runBefore("processUniversal${buildNameCapitalized}Resources", currentBundleTask)
|
|
runBefore("process${buildNameCapitalized}Resources", currentBundleTask)
|
|
}
|
|
}
|
|
|
|
publishing {
|
|
publications {
|
|
aarArchive(MavenPublication) {
|
|
groupId 'org.jitsi.react'
|
|
artifactId 'jitsi-meet-sdk'
|
|
version '1.9.0'
|
|
|
|
artifact("${project.buildDir}/outputs/aar/${project.name}-release.aar") {
|
|
extension "aar"
|
|
}
|
|
pom.withXml {
|
|
def pomXml = asNode()
|
|
pomXml.appendNode('name', 'jitsi-meet-sdk')
|
|
pomXml.appendNode('description', 'Jitsi Meet SDK for Android')
|
|
def dependencies = pomXml.appendNode('dependencies')
|
|
configurations.getByName('releaseCompileClasspath').getResolvedConfiguration().getFirstLevelModuleDependencies().each {
|
|
// The (third-party) React Native modules that we depend on
|
|
// are in source code form and do not have groupId. That is
|
|
// why we have a dedicated groupId for them. But the other
|
|
// dependencies come through Maven and, consequently, have
|
|
// groupId.
|
|
def groupId = it.moduleGroup
|
|
def artifactId = it.moduleName
|
|
|
|
if (artifactId.startsWith('react-native-')
|
|
&& groupId.equals('jitsi-meet')) {
|
|
groupId = rootProject.ext.moduleGroupId
|
|
}
|
|
|
|
def dependency = dependencies.appendNode('dependency')
|
|
dependency.appendNode('groupId', groupId)
|
|
dependency.appendNode('artifactId', artifactId)
|
|
dependency.appendNode('version', it.moduleVersion)
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
repositories {
|
|
maven { url "file:${rootProject.projectDir}/../../../jitsi/jitsi-maven-repository/releases" }
|
|
}
|
|
}
|