0
0
mirror of https://github.com/thunderbird/thunderbird-android.git synced 2024-09-20 04:02:14 +02:00
thunderbird-android/build.gradle
2022-12-07 19:21:12 +01:00

167 lines
7.0 KiB
Groovy

import com.android.build.gradle.BasePlugin
import org.gradle.api.plugins.JavaPlugin
import org.jetbrains.kotlin.gradle.dsl.KotlinCompile
buildscript {
ext {
// Judging the impact of newer library versions on the app requires being intimately familiar with the code
// base. Please don't open pull requests upgrading dependencies if you're a new contributor.
versions = [
'kotlin': '1.7.22',
'kotlinCoroutines': '1.6.4',
'jetbrainsAnnotations': '23.0.0',
'androidxAppCompat': '1.5.1',
'androidxActivity': '1.6.0',
'androidxRecyclerView': '1.2.1',
'androidxLifecycle': '2.5.1',
'androidxAnnotation': '1.5.0',
'androidxBiometric': '1.1.0',
'androidxNavigation': '2.5.2',
'androidxConstraintLayout': '2.1.4',
'androidxWorkManager': '2.7.1',
'androidxFragment': '1.5.3',
'androidxLocalBroadcastManager': '1.1.0',
'androidxCore': '1.9.0',
'androidxCardView': '1.0.0',
'androidxPreference': '1.2.0',
'androidxDrawerLayout': '1.1.1',
'androidxTransition': '1.4.1',
'androidxTestCore': '1.4.0',
'materialComponents': '1.6.1',
'fastAdapter': '5.7.0',
'preferencesFix': '1.1.0',
'okio': '3.2.0',
'moshi': '1.14.0',
'timber': '5.0.1',
'koin': '3.2.2',
// We can't upgrade Commons IO beyond this version because starting with 2.7 it is using Java 8 API
// that is not available until Android API 26 (even with desugaring enabled).
// See https://issuetracker.google.com/issues/160484830
'commonsIo': '2.6',
'mime4j': '0.8.6',
'okhttp': '4.10.0',
'minidns': '1.0.4',
'glide': '4.14.2',
'jsoup': '1.15.3',
'httpClient': '4.5.13',
'androidxTestRunner': '1.4.0',
'junit': '4.13.2',
'robolectric': '4.9',
'mockito': '4.8.0',
'mockitoKotlin': '4.0.0',
'truth': '1.1.3',
'turbine': '0.11.0',
'ktlint': '0.44.0'
]
javaVersion = JavaVersion.VERSION_1_8
}
repositories {
mavenCentral()
google()
gradlePluginPortal()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.3.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${versions.kotlin}"
classpath "com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin:1.7.22-1.0.8"
classpath "org.jlleitschuh.gradle:ktlint-gradle:11.0.0"
}
}
project.ext {
testCoverage = project.hasProperty('testCoverage')
}
allprojects {
configurations.all {
resolutionStrategy.dependencySubstitution {
substitute module("androidx.core:core") using module("androidx.core:core:${versions.androidxCore}")
substitute module("androidx.activity:activity") using module("androidx.activity:activity:${versions.androidxActivity}")
substitute module("androidx.activity:activity-ktx") using module("androidx.activity:activity-ktx:${versions.androidxActivity}")
substitute module("androidx.fragment:fragment") using module("androidx.fragment:fragment:${versions.androidxFragment}")
substitute module("androidx.fragment:fragment-ktx") using module("androidx.fragment:fragment-ktx:${versions.androidxFragment}")
substitute module("androidx.appcompat:appcompat") using module("androidx.appcompat:appcompat:${versions.androidxAppCompat}")
substitute module("androidx.preference:preference") using module("androidx.preference:preference:${versions.androidxPreference}")
substitute module("androidx.recyclerview:recyclerview") using module("androidx.recyclerview:recyclerview:${versions.androidxRecyclerView}")
substitute module("androidx.constraintlayout:constraintlayout") using module("androidx.constraintlayout:constraintlayout:${versions.androidxConstraintLayout}")
substitute module("androidx.drawerlayout:drawerlayout") using module("androidx.drawerlayout:drawerlayout:${versions.androidxDrawerLayout}")
substitute module("androidx.lifecycle:lifecycle-livedata") using module("androidx.lifecycle:lifecycle-livedata:${versions.androidxLifecycle}")
substitute module("androidx.transition:transition") using module("androidx.transition:transition:${versions.androidxTransition}")
substitute module("org.jetbrains:annotations") using module("org.jetbrains:annotations:${versions.jetbrainsAnnotations}")
substitute module("org.jetbrains.kotlin:kotlin-stdlib") using module("org.jetbrains.kotlin:kotlin-stdlib:${versions.kotlin}")
substitute module("org.jetbrains.kotlin:kotlin-stdlib-jdk7") using module("org.jetbrains.kotlin:kotlin-stdlib-jdk7:${versions.kotlin}")
substitute module("org.jetbrains.kotlin:kotlin-stdlib-jdk8") using module("org.jetbrains.kotlin:kotlin-stdlib-jdk8:${versions.kotlin}")
substitute module("org.jetbrains.kotlinx:kotlinx-coroutines-android") using module("org.jetbrains.kotlinx:kotlinx-coroutines-android:${versions.kotlinCoroutines}")
}
}
plugins.withType(BasePlugin).configureEach {
project.android {
compileSdk 33
defaultConfig {
minSdk 21
targetSdk 31
vectorDrawables.useSupportLibrary = true
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
compileOptions {
sourceCompatibility javaVersion
targetCompatibility javaVersion
}
lintOptions {
abortOnError false
lintConfig file("$rootProject.projectDir/config/lint/lint.xml")
}
testOptions {
unitTests {
includeAndroidResources = true
}
}
}
}
plugins.withType(JavaPlugin).configureEach {
project.java {
sourceCompatibility = javaVersion
targetCompatibility = javaVersion
}
}
tasks.withType(Test) {
testLogging {
exceptionFormat "full"
showCauses true
showExceptions true
showStackTraces true
}
}
tasks.withType(KotlinCompile) {
kotlinOptions {
jvmTarget = javaVersion
}
}
apply plugin: 'org.jlleitschuh.gradle.ktlint'
ktlint {
version = versions.ktlint
}
}
tasks.register('testsOnCi') {
dependsOn getSubprojects()
.collect { project -> project.tasks.withType(Test) }
.flatten()
.findAll { task -> task.name in ['testDebugUnitTest', 'test'] }
}