apply plugin: 'com.android.application' // Crashlytics integration is done as part of Firebase now, so it gets // automagically activated with google-services.json if (googleServicesEnabled) { apply plugin: 'com.google.firebase.crashlytics' } // Use the number of seconds/10 since Jan 1 2019 as the versionCode. // This lets us upload a new build at most every 10 seconds for the // next ~680 years. // https://stackoverflow.com/a/38643838 def vcode = (int) (((new Date().getTime() / 1000) - 1546297200) / 10) android { compileSdkVersion rootProject.ext.compileSdkVersion buildToolsVersion rootProject.ext.buildToolsVersion packagingOptions { exclude 'lib/*/libhermes*.so' } defaultConfig { applicationId 'org.jitsi.meet' versionCode vcode versionName project.appVersion minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion ndk { abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64' } } signingConfigs { debug { storeFile file('debug.keystore') storePassword 'android' keyAlias 'androiddebugkey' keyPassword 'android' } } buildTypes { debug { buildConfigField "boolean", "GOOGLE_SERVICES_ENABLED", "${googleServicesEnabled}" buildConfigField "boolean", "LIBRE_BUILD", "${rootProject.ext.libreBuild}" } release { // Uncomment the following line for singing a test release build. //signingConfig signingConfigs.debug minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules-release.pro' buildConfigField "boolean", "GOOGLE_SERVICES_ENABLED", "${googleServicesEnabled}" buildConfigField "boolean", "LIBRE_BUILD", "${rootProject.ext.libreBuild}" } } sourceSets { main { java { if (rootProject.ext.libreBuild) { srcDir "src" exclude "**/GoogleServicesHelper.java" } } } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'androidx.appcompat:appcompat:1.5.1' debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.7' if (!rootProject.ext.libreBuild) { implementation 'com.google.android.gms:play-services-auth:16.0.1' // Firebase // - Crashlytics // - Dynamic Links implementation 'com.google.firebase:firebase-analytics:17.5.0' implementation 'com.google.firebase:firebase-crashlytics:17.2.1' implementation 'com.google.firebase:firebase-dynamic-links:19.1.0' } implementation project(':sdk') } gradle.projectsEvaluated { // Dropbox integration // def dropboxAppKey if (project.file('dropbox.key').exists()) { dropboxAppKey = project.file('dropbox.key').text.trim() - 'db-' } if (dropboxAppKey) { android.defaultConfig.resValue('string', 'dropbox_app_key', "${dropboxAppKey}") def dropboxActivity = """ """ android.applicationVariants.all { variant -> variant.outputs.each { output -> output.getProcessManifestProvider().get().doLast { def outputDir = multiApkManifestOutputDirectory.get().asFile def manifestPath = new File(outputDir, 'AndroidManifest.xml') def charset = 'UTF-8' def text text = manifestPath.getText(charset) text = text.replace('', "${dropboxActivity}") manifestPath.write(text, charset) } } } } // Run React packager android.applicationVariants.all { variant -> def targetName = variant.name.capitalize() def currentRunPackagerTask = tasks.create( name: "run${targetName}ReactPackager", type: Exec) { group = "react" description = "Run the React packager." doFirst { println "Starting the React packager..." def androidRoot = file("${projectDir}/../") // Set up the call to the script workingDir androidRoot // Run the packager commandLine("scripts/run-packager.sh") } // Set up dev mode def devEnabled = !targetName.toLowerCase().contains("release") // Only enable for dev builds enabled devEnabled } def packageTask = variant.packageApplicationProvider.get() packageTask.dependsOn(currentRunPackagerTask) } } if (googleServicesEnabled) { apply plugin: 'com.google.gms.google-services' }