Skip to content
Snippets Groups Projects
build.gradle 6.03 KiB
Newer Older
Benoit Marty's avatar
Benoit Marty committed
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
Benoit Marty's avatar
Benoit Marty committed
apply plugin: 'kotlin-parcelize'
Benoit Marty's avatar
Benoit Marty committed
apply plugin: 'realm-android'
// WARNING: always restore this line after importing code from Element Android (1/2)
apply plugin: "com.vanniktech.maven.publish"
Benoit Marty's avatar
Benoit Marty committed

buildscript {
    repositories {
        mavenCentral()
Benoit Marty's avatar
Benoit Marty committed
    }
    dependencies {
Benoit Marty's avatar
Benoit Marty committed
        classpath "io.realm:realm-gradle-plugin:10.8.0"
Benoit Marty's avatar
Benoit Marty committed
    }
}

android {
    testOptions.unitTests.includeAndroidResources = true

    compileSdk versions.compileSdk

Benoit Marty's avatar
Benoit Marty committed
    defaultConfig {
        minSdk versions.minSdk
        targetSdk versions.targetSdk

Benoit Marty's avatar
Benoit Marty committed
        // Multidex is useful for tests
        multiDexEnabled true
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

        // The following argument makes the Android Test Orchestrator run its
        // "pm clear" command after each test invocation. This command ensures
        // that the app's state is completely cleared between tests.
        testInstrumentationRunnerArguments clearPackageData: 'true'

        // WARNING: always restore this line after importing code from Element Android (2/2)
        buildConfigField "String", "SDK_VERSION", "\"${project.getProperties().getOrDefault("VERSION_NAME", "0.0.0")}\""
Benoit Marty's avatar
Benoit Marty committed
        buildConfigField "String", "GIT_SDK_REVISION", "\"${gitRevision()}\""
        resValue "string", "git_sdk_revision", "\"${gitRevision()}\""
        resValue "string", "git_sdk_revision_unix_date", "\"${gitRevisionUnixDate()}\""
        resValue "string", "git_sdk_revision_date", "\"${gitRevisionDate()}\""

        defaultConfig {
            consumerProguardFiles 'proguard-rules.pro'
        }
    }

    testOptions {
        execution 'ANDROIDX_TEST_ORCHESTRATOR'
    }

    buildTypes {
        debug {
            // Set to true to log privacy or sensible data, such as token
            buildConfigField "boolean", "LOG_PRIVATE_DATA", project.property("vector.debugPrivateData")
            // Set to BODY instead of NONE to enable logging
            buildConfigField "okhttp3.logging.HttpLoggingInterceptor.Level", "OKHTTP_LOGGING_LEVEL", "okhttp3.logging.HttpLoggingInterceptor.Level." + project.property("vector.httpLogLevel")
        }

        release {
            buildConfigField "boolean", "LOG_PRIVATE_DATA", "false"
            buildConfigField "okhttp3.logging.HttpLoggingInterceptor.Level", "OKHTTP_LOGGING_LEVEL", "okhttp3.logging.HttpLoggingInterceptor.Level.BASIC"
Benoit Marty's avatar
Benoit Marty committed
        }
    }

    adbOptions {
        installOptions "-g"
    }

    compileOptions {
        sourceCompatibility versions.sourceCompat
        targetCompatibility versions.targetCompat
Benoit Marty's avatar
Benoit Marty committed
    }

    kotlinOptions {
Benoit Marty's avatar
Benoit Marty committed
        jvmTarget = "11"
Benoit Marty's avatar
Benoit Marty committed
    }

    sourceSets {
        androidTest {
            java.srcDirs += "src/sharedTest/java"
        }
        test {
            java.srcDirs += "src/sharedTest/java"
        }
    }
}

    static def gitRevision() {
Benoit Marty's avatar
Benoit Marty committed
    def cmd = "git rev-parse --short=8 HEAD"
    return cmd.execute().text.trim()
}

static def gitRevisionUnixDate() {
    def cmd = "git show -s --format=%ct HEAD^{commit}"
    return cmd.execute().text.trim()
}

static def gitRevisionDate() {
    def cmd = "git show -s --format=%ci HEAD^{commit}"
    return cmd.execute().text.trim()
}

dependencies {

    implementation libs.jetbrains.kotlinStdlibJdk7
    implementation libs.jetbrains.coroutinesCore
    implementation libs.jetbrains.coroutinesAndroid
Benoit Marty's avatar
Benoit Marty committed

    implementation libs.androidx.appCompat
    implementation libs.androidx.core
Benoit Marty's avatar
Benoit Marty committed

    implementation libs.androidx.lifecycleExtensions
    implementation  libs.androidx.lifecycleJava8
Benoit Marty's avatar
Benoit Marty committed

    // Network
    implementation libs.squareup.retrofit
    implementation libs.squareup.retrofitMoshi
Benoit Marty's avatar
Benoit Marty committed
    implementation(platform("com.squareup.okhttp3:okhttp-bom:4.9.1"))
    implementation 'com.squareup.okhttp3:okhttp'
    implementation 'com.squareup.okhttp3:logging-interceptor'
    implementation 'com.squareup.okhttp3:okhttp-urlconnection'

    implementation libs.squareup.moshi
    kapt libs.squareup.moshiKotlin
Benoit Marty's avatar
Benoit Marty committed

    implementation libs.markwon.core
Benoit Marty's avatar
Benoit Marty committed

    // Image
    implementation libs.androidx.exifinterface
Benoit Marty's avatar
Benoit Marty committed

    // Database
    implementation 'com.github.Zhuinden:realm-monarchy:0.7.1'
Benoit Marty's avatar
Benoit Marty committed
    kapt 'dk.ilios:realmfieldnameshelper:2.0.0'
Benoit Marty's avatar
Benoit Marty committed

    // Work
    implementation libs.androidx.work
Benoit Marty's avatar
Benoit Marty committed

    // FP
    implementation libs.arrow.core
    implementation libs.arrow.instances
Benoit Marty's avatar
Benoit Marty committed

    // olm lib is now hosted by jitpack: https://jitpack.io/#org.matrix.gitlab.matrix-org/olm
Benoit Marty's avatar
Benoit Marty committed
    implementation 'org.matrix.gitlab.matrix-org:olm:3.2.4'
Benoit Marty's avatar
Benoit Marty committed

    // DI
    implementation libs.dagger.dagger
    kapt libs.dagger.daggerCompiler
Benoit Marty's avatar
Benoit Marty committed

    // Logging
    implementation libs.jakewharton.timber
Benoit Marty's avatar
Benoit Marty committed
    implementation 'com.facebook.stetho:stetho-okhttp3:1.6.0'
Benoit Marty's avatar
Benoit Marty committed

    // Video compression
    implementation 'com.otaliastudios:transcoder:0.10.4'
Benoit Marty's avatar
Benoit Marty committed
    // Phone number https://github.com/google/libphonenumber
    implementation 'com.googlecode.libphonenumber:libphonenumber:8.12.33'
Benoit Marty's avatar
Benoit Marty committed

    testImplementation libs.tests.junit
    testImplementation 'org.robolectric:robolectric:4.6.1'
Benoit Marty's avatar
Benoit Marty committed
    //testImplementation 'org.robolectric:shadows-support-v4:3.0'
    // Note: version sticks to 1.9.2 due to https://github.com/mockk/mockk/issues/281
    testImplementation libs.mockk.mockk
    testImplementation libs.tests.kluent
    implementation libs.jetbrains.coroutinesAndroid
Benoit Marty's avatar
Benoit Marty committed
    // Plant Timber tree for test
    testImplementation 'net.lachlanmckee:timber-junit-rule:1.0.1'

    kaptAndroidTest libs.dagger.daggerCompiler
    androidTestImplementation libs.androidx.testCore
    androidTestImplementation libs.androidx.testRunner
    androidTestImplementation libs.androidx.testRules
    androidTestImplementation libs.androidx.junit
    androidTestImplementation libs.androidx.espressoCore
    androidTestImplementation libs.tests.kluent
    androidTestImplementation libs.mockk.mockkAndroid
    androidTestImplementation libs.androidx.coreTesting
    androidTestImplementation libs.jetbrains.coroutinesAndroid
Benoit Marty's avatar
Benoit Marty committed
    // Plant Timber tree for test
    androidTestImplementation libs.tests.timberJunitRule
Benoit Marty's avatar
Benoit Marty committed

    androidTestUtil libs.androidx.orchestrator