diff --git a/attachment-viewer/build.gradle b/attachment-viewer/build.gradle index 82e208d47e..064f497dc7 100644 --- a/attachment-viewer/build.gradle +++ b/attachment-viewer/build.gradle @@ -18,11 +18,12 @@ apply plugin: 'com.android.library' apply plugin: 'kotlin-android' android { - compileSdk 30 + + compileSdk versions.compileSdk defaultConfig { - minSdk 21 - targetSdk 30 + minSdk versions.minSdk + targetSdk versions.targetSdk } buildTypes { @@ -32,8 +33,8 @@ android { } } compileOptions { - sourceCompatibility JavaVersion.VERSION_11 - targetCompatibility JavaVersion.VERSION_11 + sourceCompatibility versions.sourceCompat + targetCompatibility versions.targetCompat } kotlinOptions { jvmTarget = "11" @@ -49,13 +50,13 @@ dependencies { implementation 'com.github.chrisbanes:PhotoView:2.3.0' - implementation 'io.reactivex.rxjava2:rxkotlin:2.4.0' - implementation 'io.reactivex.rxjava2:rxandroid:2.1.1' + implementation libs.rx.rxKotlin + implementation libs.rx.rxAndroid - implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" - implementation 'androidx.core:core-ktx:1.6.0' - implementation 'androidx.appcompat:appcompat:1.3.1' - implementation "androidx.recyclerview:recyclerview:1.2.1" + implementation libs.jetbrains.kotlinStdlib + implementation libs.androidx.core + implementation libs.androidx.appCompat + implementation libs.androidx.recyclerview - implementation 'com.google.android.material:material:1.4.0' + implementation libs.google.material } \ No newline at end of file diff --git a/build.gradle b/build.gradle index 800c4a713b..49c3e07ece 100644 --- a/build.gradle +++ b/build.gradle @@ -1,9 +1,9 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - // Ref: https://kotlinlang.org/releases.html - ext.kotlin_version = '1.5.30' - ext.kotlin_coroutines_version = "1.5.1" + + apply from: 'dependencies.gradle' + repositories { google() jcenter() @@ -11,12 +11,13 @@ buildscript { url "https://plugins.gradle.org/m2/" } } + dependencies { // Release notes of Android Gradle Plugin (AGP): // https://developer.android.com/studio/releases/gradle-plugin - classpath 'com.android.tools.build:gradle:7.0.2' + classpath libs.gradle.gradlePlugin + classpath libs.gradle.kotlinPlugin classpath 'com.google.gms:google-services:4.3.10' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.3' classpath 'com.google.android.gms:oss-licenses-plugin:0.10.4' classpath "com.likethesalad.android:string-reference:1.2.2" diff --git a/dependencies.gradle b/dependencies.gradle new file mode 100644 index 0000000000..13dc57d7fd --- /dev/null +++ b/dependencies.gradle @@ -0,0 +1,127 @@ +ext.versions = [ + + 'minSdk' : 21, + 'compileSdk' : 30, + 'targetSdk' : 30, + 'sourceCompat' : JavaVersion.VERSION_11, + 'targetCompat' : JavaVersion.VERSION_11, +] + +// Ref: https://kotlinlang.org/releases.html +def gradle = "7.0.2" +def kotlin = "1.5.30" +def kotlinCoroutines = "1.5.1" +def dagger = "2.38.1" +def retrofit = "2.9.0" +def arrow = "0.8.2" +def markwon = "4.6.2" +def moshi = "1.12.0" +def lifecycle = "2.2.0" +def rxBinding = "3.1.0" +def epoxy = "4.6.2" +def glide = "4.12.0" +def bigImageViewer = "1.8.1" +def jjwt = "0.11.2" + +// Testing +def mockk = "1.12.0" +def espresso = "3.4.0" +def androidxTest = "1.4.0" + + +ext.libs = [ + gradle : [ + 'gradlePlugin' : "com.android.tools.build:gradle:$gradle", + 'kotlinPlugin' : "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin" + ], + jetbrains : [ + 'kotlinStdlibJdk7' : "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin", + 'kotlinStdlib' : "org.jetbrains.kotlin:kotlin-stdlib:$kotlin", + 'coroutinesCore' : "org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinCoroutines", + 'coroutinesAndroid' : "org.jetbrains.kotlinx:kotlinx-coroutines-android:$kotlinCoroutines", + 'coroutinesRx2' : "org.jetbrains.kotlinx:kotlinx-coroutines-rx2:$kotlinCoroutines" + ], + androidx : [ + 'appCompat' : "androidx.appcompat:appcompat:1.3.1", + 'core' : "androidx.core:core-ktx:1.6.0", + 'recyclerview' : "androidx.recyclerview:recyclerview:1.2.1", + 'exifinterface' : "androidx.exifinterface:exifinterface:1.3.3", + 'fragmentKtx' : "androidx.fragment:fragment-ktx:1.3.6", + 'constraintLayout' : "androidx.constraintlayout:constraintlayout:2.1.0", + 'work' : "androidx.work:work-runtime-ktx:2.5.0", + 'autoFill' : "androidx.autofill:autofill:1.1.0", + 'preferenceKtx' : "androidx.preference:preference-ktx:1.1.1", + 'junit' : "androidx.test.ext:junit:1.1.3", + 'lifecycleExtensions' : "androidx.lifecycle:lifecycle-extensions:$lifecycle", + 'lifecycleJava8' : "androidx.lifecycle:lifecycle-common-java8:$lifecycle", + 'lifecycleLivedata' : "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1", + 'pagingRuntimeKtx' : "androidx.paging:paging-runtime-ktx:2.1.2", + 'coreTesting' : "androidx.arch.core:core-testing:2.1.0", + 'testCore' : "androidx.test:core:$androidxTest", + 'testRunner' : "androidx.test:runner:$androidxTest", + 'testRules' : "androidx.test:rules:$androidxTest", + 'espressoCore' : "androidx.test.espresso:espresso-core:$espresso", + 'espressoContrib' : "androidx.test.espresso:espresso-contrib:$espresso", + 'espressoIntents' : "androidx.test.espresso:espresso-intents:$espresso" + ], + google : [ + 'material' : "com.google.android.material:material:1.4.0" + ], + dagger : [ + 'dagger' : "com.google.dagger:dagger:$dagger", + 'daggerCompiler' : "com.google.dagger:dagger-compiler:$dagger" + ], + squareup : [ + 'moshi' : "com.squareup.moshi:moshi-adapters:$moshi", + 'moshiKotlin' : "com.squareup.moshi:moshi-kotlin-codegen:$moshi", + 'retrofit' : "com.squareup.retrofit2:retrofit:$retrofit", + 'retrofitMoshi' : "com.squareup.retrofit2:converter-moshi:$retrofit" + ], + rx : [ + 'rxKotlin' : "io.reactivex.rxjava2:rxkotlin:2.4.0", + 'rxAndroid' : "io.reactivex.rxjava2:rxandroid:2.1.1" + ], + arrow : [ + 'core' : "io.arrow-kt:arrow-core:$arrow", + 'instances' : "io.arrow-kt:arrow-instances-core:$arrow" + ], + markwon : [ + 'core' : "io.noties.markwon:core:$markwon", + 'html' : "io.noties.markwon:html:$markwon" + ], + airbnb : [ + 'epoxy' : "com.airbnb.android:epoxy:$epoxy", + 'epoxyGlide' : "com.airbnb.android:epoxy-glide-preloading:$epoxy", + 'epoxyProcessor' : "com.airbnb.android:epoxy-processor:$epoxy", + 'epoxyPaging' : "com.airbnb.android:epoxy-paging:$epoxy", + 'mvrx' : "com.airbnb.android:mvrx:1.5.1" + ], + mockk : [ + 'mockk' : "io.mockk:mockk:$mockk", + 'mockkAndroid' : "io.mockk:mockk-android:$mockk" + ], + github : [ + 'glide' : "com.github.bumptech.glide:glide:$glide", + 'glideCompiler' : "com.github.bumptech.glide:compiler:$glide", + 'bigImageViewer' : "com.github.piasy:BigImageViewer:$bigImageViewer", + 'glideImageLoader' : "com.github.piasy:GlideImageLoader:$bigImageViewer", + 'progressPieIndicator' : "com.github.piasy:ProgressPieIndicator:$bigImageViewer", + 'glideImageViewFactory' : "com.github.piasy:GlideImageViewFactory:$bigImageViewer" + ], + jakewharton : [ + 'timber' : "com.jakewharton.timber:timber:5.0.1", + 'rxbinding' : "com.jakewharton.rxbinding3:rxbinding:$rxBinding", + 'rxbindingAppcompat' : "com.jakewharton.rxbinding3:rxbinding-appcompat:$rxBinding", + 'rxbindingMaterial' : "com.jakewharton.rxbinding3:rxbinding-material:$rxBinding" + ], + jsonwebtoken: [ + 'jjwtApi' : "io.jsonwebtoken:jjwt-api:$jjwt", + 'jjwtImpl' : "io.jsonwebtoken:jjwt-impl:$jjwt", + 'jjwtOrgjson' : "io.jsonwebtoken:jjwt-orgjson:$jjwt" + ], + tests : [ + 'kluent' : "org.amshove.kluent:kluent-android:1.68", + 'timberJunitRule' : "net.lachlanmckee:timber-junit-rule:1.0.1", + 'junit' : "junit:junit:4.13.2" + ] +] \ No newline at end of file diff --git a/library/ui-styles/build.gradle b/library/ui-styles/build.gradle index 069becba0d..cee58414c7 100644 --- a/library/ui-styles/build.gradle +++ b/library/ui-styles/build.gradle @@ -20,11 +20,11 @@ plugins { } android { - compileSdk 30 + compileSdk versions.compileSdk defaultConfig { - minSdk 21 - targetSdk 30 + minSdk versions.minSdk + targetSdk versions.targetSdk testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles "consumer-rules.pro" @@ -38,8 +38,8 @@ android { } compileOptions { - sourceCompatibility JavaVersion.VERSION_11 - targetCompatibility JavaVersion.VERSION_11 + sourceCompatibility versions.sourceCompat + targetCompatibility versions.targetCompat } kotlinOptions { @@ -52,10 +52,10 @@ android { } dependencies { - implementation 'androidx.appcompat:appcompat:1.3.1' - implementation 'com.google.android.material:material:1.4.0' + implementation libs.androidx.appCompat + implementation libs.google.material // Pref theme - implementation 'androidx.preference:preference-ktx:1.1.1' + implementation libs.androidx.preferenceKtx // PFLockScreen attrs implementation 'com.github.vector-im:PFLockScreen-Android:1.0.0-beta12' // dialpad dimen diff --git a/matrix-sdk-android-rx/build.gradle b/matrix-sdk-android-rx/build.gradle index 0d2ddee2e0..dbd761cee3 100644 --- a/matrix-sdk-android-rx/build.gradle +++ b/matrix-sdk-android-rx/build.gradle @@ -3,11 +3,11 @@ apply plugin: 'kotlin-android' apply plugin: 'kotlin-kapt' android { - compileSdk 30 + compileSdk versions.compileSdk defaultConfig { - minSdk 21 - targetSdk 30 + minSdk versions.minSdk + targetSdk versions.targetSdk // Multidex is useful for tests multiDexEnabled true @@ -22,8 +22,8 @@ android { } compileOptions { - sourceCompatibility JavaVersion.VERSION_11 - targetCompatibility JavaVersion.VERSION_11 + sourceCompatibility versions.sourceCompat + targetCompatibility versions.targetCompat } kotlinOptions { @@ -32,15 +32,16 @@ android { } dependencies { + implementation project(":matrix-sdk-android") - implementation 'androidx.appcompat:appcompat:1.3.1' - implementation 'io.reactivex.rxjava2:rxkotlin:2.4.0' - implementation 'io.reactivex.rxjava2:rxandroid:2.1.1' - implementation "org.jetbrains.kotlinx:kotlinx-coroutines-rx2:$kotlin_coroutines_version" + implementation libs.androidx.appCompat + implementation libs.rx.rxKotlin + implementation libs.rx.rxAndroid + implementation libs.jetbrains.coroutinesRx2 // Paging - implementation "androidx.paging:paging-runtime-ktx:2.1.2" + implementation libs.androidx.pagingRuntimeKtx // Logging - implementation 'com.jakewharton.timber:timber:5.0.1' + implementation libs.jakewharton.timber } diff --git a/matrix-sdk-android/build.gradle b/matrix-sdk-android/build.gradle index 5da7fd9885..824d51d589 100644 --- a/matrix-sdk-android/build.gradle +++ b/matrix-sdk-android/build.gradle @@ -14,12 +14,13 @@ buildscript { } android { - compileSdk 30 testOptions.unitTests.includeAndroidResources = true + compileSdk versions.compileSdk + defaultConfig { - minSdk 21 - targetSdk 30 + minSdk versions.minSdk + targetSdk versions.targetSdk // Multidex is useful for tests multiDexEnabled true @@ -65,8 +66,8 @@ android { } compileOptions { - sourceCompatibility JavaVersion.VERSION_11 - targetCompatibility JavaVersion.VERSION_11 + sourceCompatibility versions.sourceCompat + targetCompatibility versions.targetCompat } kotlinOptions { @@ -100,62 +101,53 @@ static def gitRevisionDate() { dependencies { - def arrow_version = "0.8.2" - def moshi_version = '1.12.0' - def lifecycle_version = '2.2.0' - def arch_version = '2.1.0' - def markwon_version = '3.1.0' - def daggerVersion = '2.38.1' - def work_version = '2.5.0' - def retrofit_version = '2.9.0' + implementation libs.jetbrains.kotlinStdlibJdk7 + implementation libs.jetbrains.coroutinesCore + implementation libs.jetbrains.coroutinesAndroid - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlin_coroutines_version" - implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$kotlin_coroutines_version" + implementation libs.androidx.appCompat + implementation libs.androidx.core - implementation "androidx.appcompat:appcompat:1.3.1" - implementation "androidx.core:core-ktx:1.6.0" - - implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version" - implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version" + implementation libs.androidx.lifecycleExtensions + implementation libs.androidx.lifecycleJava8 // Network - implementation "com.squareup.retrofit2:retrofit:$retrofit_version" - implementation "com.squareup.retrofit2:converter-moshi:$retrofit_version" + implementation libs.squareup.retrofit + implementation libs.squareup.retrofitMoshi 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 "com.squareup.moshi:moshi-adapters:$moshi_version" - kapt "com.squareup.moshi:moshi-kotlin-codegen:$moshi_version" + implementation libs.squareup.moshi + kapt libs.squareup.moshiKotlin - implementation "ru.noties.markwon:core:$markwon_version" + implementation libs.markwon.core // Image - implementation 'androidx.exifinterface:exifinterface:1.3.3' + implementation libs.androidx.exifinterface // Database implementation 'com.github.Zhuinden:realm-monarchy:0.7.1' kapt 'dk.ilios:realmfieldnameshelper:2.0.0' // Work - implementation "androidx.work:work-runtime-ktx:$work_version" + implementation libs.androidx.work // FP - implementation "io.arrow-kt:arrow-core:$arrow_version" - implementation "io.arrow-kt:arrow-instances-core:$arrow_version" + implementation libs.arrow.core + implementation libs.arrow.instances // olm lib is now hosted by jitpack: https://jitpack.io/#org.matrix.gitlab.matrix-org/olm implementation 'org.matrix.gitlab.matrix-org:olm:3.2.4' // DI - implementation "com.google.dagger:dagger:$daggerVersion" - kapt "com.google.dagger:dagger-compiler:$daggerVersion" + implementation libs.dagger.dagger + kapt libs.dagger.daggerCompiler // Logging - implementation 'com.jakewharton.timber:timber:5.0.1' + implementation libs.jakewharton.timber implementation 'com.facebook.stetho:stetho-okhttp3:1.6.0' // Video compression @@ -164,28 +156,28 @@ dependencies { // Phone number https://github.com/google/libphonenumber implementation 'com.googlecode.libphonenumber:libphonenumber:8.12.32' - testImplementation 'junit:junit:4.13.2' + testImplementation libs.tests.junit testImplementation 'org.robolectric:robolectric:4.6.1' //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 'io.mockk:mockk:1.12.0' - testImplementation 'org.amshove.kluent:kluent-android:1.68' - testImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$kotlin_coroutines_version" + testImplementation libs.mockk.mockk + testImplementation libs.tests.kluent + implementation libs.jetbrains.coroutinesAndroid // Plant Timber tree for test testImplementation 'net.lachlanmckee:timber-junit-rule:1.0.1' - kaptAndroidTest "com.google.dagger:dagger-compiler:$daggerVersion" - androidTestImplementation 'androidx.test:core:1.4.0' - androidTestImplementation 'androidx.test:runner:1.4.0' - androidTestImplementation 'androidx.test:rules:1.4.0' - androidTestImplementation 'androidx.test.ext:junit:1.1.3' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' - androidTestImplementation 'org.amshove.kluent:kluent-android:1.68' - androidTestImplementation 'io.mockk:mockk-android:1.12.0' - androidTestImplementation "androidx.arch.core:core-testing:$arch_version" - androidTestImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$kotlin_coroutines_version" + 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 // Plant Timber tree for test - androidTestImplementation 'net.lachlanmckee:timber-junit-rule:1.0.1' + androidTestImplementation libs.tests.timberJunitRule androidTestUtil 'androidx.test:orchestrator:1.4.0' } diff --git a/multipicker/build.gradle b/multipicker/build.gradle index 64460f6721..437499df7b 100644 --- a/multipicker/build.gradle +++ b/multipicker/build.gradle @@ -19,12 +19,11 @@ apply plugin: 'kotlin-android' apply plugin: 'kotlin-parcelize' android { - compileSdk 30 + compileSdk versions.compileSdk defaultConfig { - minSdk 19 - targetSdk 30 - + minSdk versions.minSdk + targetSdk versions.targetSdk testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles 'consumer-rules.pro' } @@ -39,11 +38,11 @@ android { } dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - implementation 'androidx.appcompat:appcompat:1.3.1' - implementation "androidx.fragment:fragment-ktx:1.3.6" - implementation 'androidx.exifinterface:exifinterface:1.3.3' + implementation libs.jetbrains.kotlinStdlibJdk7 + implementation libs.androidx.appCompat + implementation libs.androidx.fragmentKtx + implementation libs.androidx.exifinterface // Log - implementation 'com.jakewharton.timber:timber:5.0.1' + implementation libs.jakewharton.timber } diff --git a/vector/build.gradle b/vector/build.gradle index d65463bec2..afc6ac6a25 100644 --- a/vector/build.gradle +++ b/vector/build.gradle @@ -102,17 +102,20 @@ ext.abiVersionCodes = ["armeabi-v7a": 1, "arm64-v8a": 2, "x86": 3, "x86_64": 4]. def buildNumber = System.env.BUILDKITE_BUILD_NUMBER as Integer ?: 0 android { - compileSdk 30 + + // Due to a bug introduced in Android gradle plugin 3.6.0, we have to specify the ndk version to use // Ref: https://issuetracker.google.com/issues/144111441 ndkVersion "21.3.6528147" + compileSdk versions.compileSdk + defaultConfig { applicationId "im.vector.app" // Set to API 21: see #405 - minSdk 21 - targetSdk 30 + minSdk versions.minSdk + targetSdk versions.targetSdk multiDexEnabled true renderscriptTargetApi 24 @@ -289,8 +292,8 @@ android { } compileOptions { - sourceCompatibility JavaVersion.VERSION_11 - targetCompatibility JavaVersion.VERSION_11 + sourceCompatibility versions.sourceCompat + targetCompatibility versions.targetCompat } kotlinOptions { @@ -313,26 +316,6 @@ android { dependencies { - def epoxy_version = '4.6.2' - def fragment_version = '1.3.6' - def arrow_version = "0.8.2" - def markwon_version = '4.1.2' - def big_image_viewer_version = '1.8.1' - def glide_version = '4.12.0' - def moshi_version = '1.12.0' - def daggerVersion = '2.38.1' - def autofill_version = "1.1.0" - def work_version = '2.5.0' - def arch_version = '2.1.0' - def lifecycle_version = '2.2.0' - def rxbinding_version = '3.1.0' - def jjwt_version = '0.11.2' - - // Tests - def kluent_version = '1.68' - def androidxTest_version = '1.4.0' - def espresso_version = '3.4.0' - implementation project(":matrix-sdk-android") implementation project(":matrix-sdk-android-rx") implementation project(":diff-match-patch") @@ -341,29 +324,30 @@ dependencies { implementation project(":library:ui-styles") implementation 'androidx.multidex:multidex:2.0.1' - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlin_coroutines_version" - implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$kotlin_coroutines_version" + implementation libs.jetbrains.kotlinStdlibJdk7 + implementation libs.jetbrains.coroutinesCore + implementation libs.jetbrains.coroutinesAndroid - implementation "androidx.recyclerview:recyclerview:1.2.1" - implementation 'androidx.appcompat:appcompat:1.3.1' - implementation "androidx.fragment:fragment-ktx:$fragment_version" - implementation 'androidx.constraintlayout:constraintlayout:2.1.0' + implementation libs.androidx.recyclerview + implementation libs.androidx.appCompat + implementation libs.androidx.fragmentKtx + implementation libs.androidx.constraintLayout implementation "androidx.sharetarget:sharetarget:1.1.0" - implementation 'androidx.core:core-ktx:1.6.0' + implementation libs.androidx.core implementation "androidx.media:media:1.4.1" implementation "androidx.transition:transition:1.4.1" implementation "org.threeten:threetenbp:1.4.0:no-tzdb" implementation "com.gabrielittner.threetenbp:lazythreetenbp:0.9.0" - implementation "com.squareup.moshi:moshi-adapters:$moshi_version" - implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version" - implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.3.1" - kapt "com.squareup.moshi:moshi-kotlin-codegen:$moshi_version" + implementation libs.squareup.moshi + kapt libs.squareup.moshiKotlin + implementation libs.androidx.lifecycleExtensions + implementation libs.androidx.lifecycleLivedata + // Log - implementation 'com.jakewharton.timber:timber:5.0.1' + implementation libs.jakewharton.timber // Debug implementation 'com.facebook.stetho:stetho:1.6.0' @@ -372,42 +356,42 @@ dependencies { implementation 'com.googlecode.libphonenumber:libphonenumber:8.12.32' // rx - implementation 'io.reactivex.rxjava2:rxkotlin:2.4.0' - implementation 'io.reactivex.rxjava2:rxandroid:2.1.1' + implementation libs.rx.rxKotlin + implementation libs.rx.rxAndroid implementation 'com.jakewharton.rxrelay2:rxrelay:2.1.1' // RXBinding - implementation "com.jakewharton.rxbinding3:rxbinding:$rxbinding_version" - implementation "com.jakewharton.rxbinding3:rxbinding-appcompat:$rxbinding_version" - implementation "com.jakewharton.rxbinding3:rxbinding-material:$rxbinding_version" + implementation libs.jakewharton.rxbinding + implementation libs.jakewharton.rxbindingAppcompat + implementation libs.jakewharton.rxbindingMaterial - implementation("com.airbnb.android:epoxy:$epoxy_version") - implementation "com.airbnb.android:epoxy-glide-preloading:$epoxy_version" - kapt "com.airbnb.android:epoxy-processor:$epoxy_version" - implementation "com.airbnb.android:epoxy-paging:$epoxy_version" - implementation 'com.airbnb.android:mvrx:1.5.1' + implementation libs.airbnb.epoxy + implementation libs.airbnb.epoxyGlide + kapt libs.airbnb.epoxyProcessor + implementation libs.airbnb.epoxyPaging + implementation libs.airbnb.mvrx // Work - implementation "androidx.work:work-runtime-ktx:$work_version" + implementation libs.androidx.work // Paging - implementation "androidx.paging:paging-runtime-ktx:2.1.2" + implementation libs.androidx.pagingRuntimeKtx // Functional Programming - implementation "io.arrow-kt:arrow-core:$arrow_version" + implementation libs.arrow.core // Pref - implementation 'androidx.preference:preference-ktx:1.1.1' + implementation libs.androidx.preferenceKtx // UI implementation 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1' - implementation 'com.google.android.material:material:1.4.0' + implementation libs.google.material implementation 'me.gujun.android:span:1.7' - implementation "io.noties.markwon:core:$markwon_version" - implementation "io.noties.markwon:html:$markwon_version" + implementation libs.markwon.core + implementation libs.markwon.html implementation 'com.googlecode.htmlcompressor:htmlcompressor:1.5.2' implementation 'me.saket:better-link-movement-method:2.2.0' implementation 'com.google.android:flexbox:2.0.1' - implementation "androidx.autofill:autofill:$autofill_version" + implementation libs.androidx.autoFill implementation 'jp.wasabeef:glide-transformations:4.3.0' implementation 'com.github.vector-im:PFLockScreen-Android:1.0.0-beta12' implementation 'com.github.hyuwah:DraggableView:1.0.0' @@ -431,16 +415,16 @@ dependencies { implementation 'com.squareup:seismic:1.0.2' // Image Loading - implementation "com.github.piasy:BigImageViewer:$big_image_viewer_version" - implementation "com.github.piasy:GlideImageLoader:$big_image_viewer_version" - implementation "com.github.piasy:ProgressPieIndicator:$big_image_viewer_version" - implementation "com.github.piasy:GlideImageViewFactory:$big_image_viewer_version" + implementation libs.github.bigImageViewer + implementation libs.github.glideImageLoader + implementation libs.github.progressPieIndicator + implementation libs.github.glideImageViewFactory // implementation 'com.github.MikeOrtiz:TouchImageView:3.0.2' implementation 'com.github.chrisbanes:PhotoView:2.3.0' - implementation "com.github.bumptech.glide:glide:$glide_version" - kapt "com.github.bumptech.glide:compiler:$glide_version" + implementation libs.github.glide + kapt libs.github.glideCompiler implementation 'com.danikula:videocache:2.7.1' implementation 'com.github.yalantis:ucrop:2.2.7' @@ -451,8 +435,8 @@ dependencies { implementation 'nl.dionsegijn:konfetti:1.3.2' implementation 'com.github.jetradarmobile:android-snowfall:1.2.1' // DI - implementation "com.google.dagger:dagger:$daggerVersion" - kapt "com.google.dagger:dagger-compiler:$daggerVersion" + implementation libs.dagger.dagger + kapt libs.dagger.daggerCompiler // gplay flavor only gplayImplementation('com.google.firebase:firebase-messaging:22.0.0') { @@ -492,34 +476,34 @@ dependencies { implementation 'im.dlg:android-dialer:1.2.5' // JWT - api "io.jsonwebtoken:jjwt-api:$jjwt_version" - runtimeOnly "io.jsonwebtoken:jjwt-impl:$jjwt_version" - runtimeOnly("io.jsonwebtoken:jjwt-orgjson:$jjwt_version") { + api libs.jsonwebtoken.jjwtApi + runtimeOnly libs.jsonwebtoken.jjwtImpl + runtimeOnly(libs.jsonwebtoken.jjwtOrgjson) { exclude group: 'org.json', module: 'json' //provided by Android natively } implementation 'commons-codec:commons-codec:1.15' // TESTS - testImplementation 'junit:junit:4.13.2' - testImplementation "org.amshove.kluent:kluent-android:$kluent_version" + testImplementation libs.tests.junit + testImplementation libs.tests.kluent // Plant Timber tree for test - testImplementation 'net.lachlanmckee:timber-junit-rule:1.0.1' + testImplementation libs.tests.timberJunitRule // Activate when you want to check for leaks, from time to time. //debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.3' - androidTestImplementation "androidx.test:core:$androidxTest_version" - androidTestImplementation "androidx.test:runner:$androidxTest_version" - androidTestImplementation "androidx.test:rules:$androidxTest_version" - androidTestImplementation 'androidx.test.ext:junit:1.1.3' - androidTestImplementation "androidx.test.espresso:espresso-core:$espresso_version" - androidTestImplementation "androidx.test.espresso:espresso-contrib:$espresso_version" - androidTestImplementation "androidx.test.espresso:espresso-intents:$espresso_version" - androidTestImplementation "org.amshove.kluent:kluent-android:$kluent_version" - androidTestImplementation "androidx.arch.core:core-testing:$arch_version" + androidTestImplementation libs.androidx.testCore + androidTestImplementation libs.androidx.testRunner + androidTestImplementation libs.androidx.testRules + androidTestImplementation libs.androidx.junit + androidTestImplementation libs.androidx.espressoCore + androidTestImplementation libs.androidx.espressoContrib + androidTestImplementation libs.androidx.espressoIntents + androidTestImplementation libs.tests.kluent + androidTestImplementation libs.androidx.coreTesting // Plant Timber tree for test - androidTestImplementation 'net.lachlanmckee:timber-junit-rule:1.0.1' + androidTestImplementation libs.tests.timberJunitRule // "The one who serves a great Espresso" androidTestImplementation('com.adevinta.android:barista:4.1.0') { exclude group: 'org.jetbrains.kotlin'