Skip to content
build.gradle 7.33 KiB
Newer Older
Sam Whited's avatar
Sam Whited committed
// Top-level build file where you can add configuration options common to all
// sub-projects/modules.
buildscript {
Daniel Gultsch's avatar
Daniel Gultsch committed
    repositories {
        google()
        mavenCentral()
Daniel Gultsch's avatar
Daniel Gultsch committed
    }
    dependencies {
Daniel Gultsch's avatar
Daniel Gultsch committed
        classpath 'com.android.tools.build:gradle:7.3.1'
Daniel Gultsch's avatar
Daniel Gultsch committed
    }
apply plugin: 'com.android.application'
Daniel Gultsch's avatar
Daniel Gultsch committed
    mavenCentral()
    jcenter()
    playstoreImplementation
    freeImplementation
    conversationsFreeImplementation
    conversationsPlaystorImplementation
    conversationsPlaystoreImplementation
    quicksyPlaystoreImplementation
    quicksyPlaystoreImplementation
    quicksyFreeImplementation
Daniel Gultsch's avatar
Daniel Gultsch committed
    quicksyImplementation
dependencies {
    implementation 'androidx.viewpager:viewpager:1.0.0'

    playstoreImplementation('com.google.firebase:firebase-messaging:23.1.1') {
        exclude group: 'com.google.firebase', module: 'firebase-core'
        exclude group: 'com.google.firebase', module: 'firebase-analytics'
        exclude group: 'com.google.firebase', module: 'firebase-measurement-connector'
    conversationsPlaystoreImplementation("com.android.installreferrer:installreferrer:2.2")
    quicksyPlaystoreImplementation 'com.google.android.gms:play-services-auth-api-phone:18.0.1'
    implementation 'org.sufficientlysecure:openpgp-api:10.0'
    implementation 'com.theartofdev.edmodo:android-image-cropper:2.8.0'
    implementation 'androidx.appcompat:appcompat:1.5.1'
    implementation 'androidx.exifinterface:exifinterface:1.3.5'
    implementation 'androidx.cardview:cardview:1.0.0'
    implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
    implementation 'com.google.android.material:material:1.7.0'
    implementation "androidx.emoji2:emoji2:1.2.0"
    freeImplementation "androidx.emoji2:emoji2-bundled:1.2.0"
    implementation 'org.bouncycastle:bcmail-jdk15on:1.64'
    //zxing stopped supporting Java 7 so we have to stick with 3.3.3
    //https://github.com/zxing/zxing/issues/1170
    implementation 'com.google.zxing:core:3.3.3'
    implementation 'de.measite.minidns:minidns-hla:0.2.4'
Daniel Gultsch's avatar
Daniel Gultsch committed
    implementation 'me.leolin:ShortcutBadger:1.1.22@aar'
    implementation 'org.whispersystems:signal-protocol-java:2.6.2'
    implementation 'com.makeramen:roundedimageview:2.3.0'
    implementation "com.wefika:flowlayout:0.4.1"
    //noinspection GradleDependency
    implementation 'com.otaliastudios:transcoder:0.9.1'
Daniel Gultsch's avatar
Daniel Gultsch committed
    implementation 'org.jxmpp:jxmpp-jid:1.0.3'
    implementation 'org.osmdroid:osmdroid-android:6.1.11'
    implementation 'org.hsluv:hsluv:0.2'
    implementation 'org.conscrypt:conscrypt-android:2.5.2'
    implementation 'me.drakeet.support:toastcompat:1.1.0'
    implementation "com.leinardi.android:speed-dial:3.2.0"
Daniel Gultsch's avatar
Daniel Gultsch committed

    implementation "com.squareup.retrofit2:retrofit:2.9.0"
    implementation "com.squareup.retrofit2:converter-gson:2.9.0"
Daniel Gultsch's avatar
Daniel Gultsch committed
    implementation "com.squareup.okhttp3:okhttp:4.10.0"
Daniel Gultsch's avatar
Daniel Gultsch committed

Daniel Gultsch's avatar
Daniel Gultsch committed
    implementation 'com.google.guava:guava:31.1-android'
Daniel Gultsch's avatar
Daniel Gultsch committed
    quicksyImplementation 'io.michaelrocks:libphonenumber-android:8.12.49'
Daniel Gultsch's avatar
Daniel Gultsch committed
    implementation 'im.conversations.webrtc:webrtc-android:104.0.0'
Daniel Gultsch's avatar
Daniel Gultsch committed
ext {
    preDexEnabled = System.getProperty("pre-dex", "true")
    abiCodes = ['armeabi-v7a': 1, 'x86': 2, 'x86_64': 3, 'arm64-v8a': 4]
Daniel Gultsch's avatar
Daniel Gultsch committed
}

Daniel Gultsch's avatar
Daniel Gultsch committed
    namespace 'eu.siacs.conversations'
Daniel Gultsch's avatar
Daniel Gultsch committed
    compileSdkVersion 32
Daniel Gultsch's avatar
Daniel Gultsch committed

    defaultConfig {
Daniel Gultsch's avatar
Daniel Gultsch committed
        minSdkVersion 21
Daniel Gultsch's avatar
Daniel Gultsch committed
        targetSdkVersion 32
Daniel Gultsch's avatar
Daniel Gultsch committed
        versionCode 42046
        versionName "2.12.0"
Daniel Gultsch's avatar
Daniel Gultsch committed
        archivesBaseName += "-$versionName"
        applicationId "eu.siacs.conversations"
        resValue "string", "applicationId", applicationId
        def appName = "Conversations"
        resValue "string", "app_name", appName
        buildConfigField "String", "APP_NAME", "\"$appName\""
Daniel Gultsch's avatar
Daniel Gultsch committed
    configurations {
        implementation.exclude group: 'org.jetbrains' , module:'annotations'
Daniel Gultsch's avatar
Daniel Gultsch committed
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    flavorDimensions("mode", "distribution")
Daniel Gultsch's avatar
Daniel Gultsch committed
    productFlavors {
Daniel Gultsch's avatar
Daniel Gultsch committed
        quicksy {
            dimension "mode"
            applicationId = "im.quicksy.client"
            resValue "string", "applicationId", applicationId

            def appName = "Quicksy"
            resValue "string", "app_name", appName
            buildConfigField "String", "APP_NAME", "\"$appName\""
Daniel Gultsch's avatar
Daniel Gultsch committed
        conversations {
        playstore {
            dimension "distribution"
            versionNameSuffix "+playstore"
        }
        free {
            dimension "distribution"
            versionNameSuffix "+free"
Daniel Gultsch's avatar
Daniel Gultsch committed
    }
            java {
                srcDir 'src/quicksyFree/java'
            }
        }
            java {
                srcDir 'src/quicksyPlaystore/java'
            }
            res {
                srcDir 'src/quicksyPlaystore/res'
                srcDir 'src/conversationsFree/java'
            }
        }
            java {
                srcDir 'src/conversationsPlaystore/java'
            }
            res {
                srcDir 'src/conversationsPlaystore/res'
Daniel Gultsch's avatar
Daniel Gultsch committed
    buildTypes {
        release {
            shrinkResources true
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            shrinkResources true
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }


    if (new File("signing.properties").exists()) {
        Properties props = new Properties()
        props.load(new FileInputStream(file("signing.properties")))

Daniel Gultsch's avatar
Daniel Gultsch committed
        signingConfigs {
            release {
                storeFile file(props['keystore'])
                storePassword props['keystore.password']
                keyAlias props['keystore.alias']
                keyPassword props['keystore.password']
Daniel Gultsch's avatar
Daniel Gultsch committed
            }
        }
        buildTypes.release.signingConfig = signingConfigs.release
    }


    subprojects {

        afterEvaluate {
            if (getPlugins().hasPlugin('android') ||
                    getPlugins().hasPlugin('android-library')) {

                configure(android.lintOptions) {
                    disable 'AndroidGradlePluginVersion', 'MissingTranslation'
                }
            }

        }
    }
    packagingOptions {
Daniel Gultsch's avatar
Daniel Gultsch committed
        resources {
            excludes += ['META-INF/BCKEY.DSA', 'META-INF/BCKEY.SF']
        }
Daniel Gultsch's avatar
Daniel Gultsch committed
    }
Daniel Gultsch's avatar
Daniel Gultsch committed
    lint {
        disable 'MissingTranslation', 'InvalidPackage', 'AppCompatResource'
    }

    android.applicationVariants.all { variant ->
        variant.outputs.each { output ->
            def baseAbiVersionCode = project.ext.abiCodes.get(output.getFilter(com.android.build.OutputFile.ABI))
            if (baseAbiVersionCode != null) {
                output.versionCodeOverride = (100 * project.android.defaultConfig.versionCode) + baseAbiVersionCode
            } else {
                output.versionCodeOverride = 100 * project.android.defaultConfig.versionCode