Migrate to Kotlin DSL (#586)

* Migrated to Kotlin DSL

Signed-off-by: Arnau Mora Gras <arnyminerz@proton.me>

* Migrated to Kotlin DSL

Signed-off-by: Arnau Mora Gras <arnyminerz@proton.me>

* Update versions, suppress nofications for libs we don't want to upgrade

---------

Signed-off-by: Arnau Mora Gras <arnyminerz@proton.me>
Co-authored-by: Ricki Hirner <hirner@bitfire.at>
This commit is contained in:
Arnau Mora 2024-02-20 11:48:02 +01:00 committed by GitHub
parent 30bb981975
commit 0253cd3d89
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 222 additions and 222 deletions

View file

@ -1,216 +0,0 @@
/***************************************************************************************************
* Copyright © All Contributors. See LICENSE and AUTHORS in the root directory for details.
**************************************************************************************************/
plugins {
alias(libs.plugins.mikepenz.aboutLibraries)
alias(libs.plugins.android.application)
alias(libs.plugins.hilt)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.kapt)
alias(libs.plugins.ksp)
}
aboutLibraries {
// This means that we have to generate the dependencies explicitly:
// ./gradlew --no-configuration-cache --no-build-cache -PaboutLibraries.exportPath=src/main/res/raw/ app:exportLibraryDefinitions
registerAndroidTasks = false
}
// Android configuration
android {
compileSdk 34
defaultConfig {
applicationId "at.bitfire.davdroid"
versionCode 403130100
versionName '4.3.13.1'
buildConfigField "long", "buildTime", System.currentTimeMillis() + "L"
setProperty "archivesBaseName", "davx5-ose-" + getVersionName()
minSdkVersion 24 // Android 7.0
targetSdkVersion 34 // Android 14
buildConfigField "String", "userAgent", "\"DAVx5\""
testInstrumentationRunner "at.bitfire.davdroid.CustomTestRunner"
}
compileOptions {
// enable because ical4android requires desugaring
coreLibraryDesugaringEnabled true
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
buildFeatures {
buildConfig = true
compose = true
viewBinding = true
dataBinding = true
}
composeOptions {
// Keep this in sync with Kotlin version:
// https://developer.android.com/jetpack/androidx/releases/compose-kotlin
kotlinCompilerExtensionVersion = libs.versions.compose.compiler.get()
}
// Java namespace for our classes (not to be confused with Android package ID)
namespace "at.bitfire.davdroid"
flavorDimensions = [ "distribution" ]
productFlavors {
ose {
dimension "distribution"
versionNameSuffix "-ose"
}
}
sourceSets {
androidTest {
assets.srcDirs += files("$projectDir/schemas".toString())
}
}
signingConfigs {
bitfire {
storeFile file(System.getenv("ANDROID_KEYSTORE") ?: "/dev/null")
storePassword System.getenv("ANDROID_KEYSTORE_PASSWORD")
keyAlias System.getenv("ANDROID_KEY_ALIAS")
keyPassword System.getenv("ANDROID_KEY_PASSWORD")
}
}
buildTypes {
debug {
}
release {
minifyEnabled true
proguardFiles getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules-release.pro"
shrinkResources true
signingConfig signingConfigs.bitfire
}
}
lint {
disable "GoogleAppIndexingWarning", "ImpliedQuantity", "MissingQuantity", "MissingTranslation", "ExtraTranslation", "RtlEnabled", "RtlHardcoded", "Typos", "NullSafeMutableLiveData"
}
packagingOptions {
resources {
excludes += ["META-INF/*.md"]
}
}
androidResources {
generateLocaleConfig true
}
}
ksp {
arg("room.schemaLocation", "$projectDir/schemas")
}
configurations {
configureEach {
// exclude modules which are in conflict with system libraries
exclude module: "commons-logging"
exclude group: "org.json", module: "json"
// Groovy requires SDK 26+, and it's not required, so exclude it
exclude group: "org.codehaus.groovy"
}
}
dependencies {
// core
implementation libs.kotlin.stdlib
implementation libs.kotlinx.coroutines
coreLibraryDesugaring libs.android.desugaring
// Hilt
implementation libs.hilt.android.base
ksp libs.androidx.hilt.compiler
ksp libs.hilt.android.compiler
// support libs
implementation libs.androidx.activityCompose
implementation libs.androidx.appcompat
implementation libs.androidx.browser
implementation libs.androidx.cardView
implementation libs.androidx.concurrentFuture
implementation libs.androidx.constraintLayout
implementation libs.androidx.core
implementation libs.androidx.fragment
implementation libs.androidx.hilt.work
implementation libs.androidx.lifecycle.viewmodel.base
implementation libs.androidx.lifecycle.viewmodel.compose
implementation libs.androidx.paging
implementation libs.androidx.preference
implementation libs.androidx.security
implementation libs.androidx.swiperefreshlayout
implementation libs.androidx.work.base
implementation libs.android.flexbox
implementation libs.android.material
// Jetpack Compose
implementation libs.compose.accompanist.permissions
implementation libs.compose.accompanist.themeAdapter
implementation platform(libs.compose.bom)
implementation libs.compose.material
implementation libs.compose.materialIconsExtended
implementation libs.compose.runtime.livedata
debugImplementation libs.compose.ui.tooling
implementation libs.compose.ui.toolingPreview
// Jetpack Room
implementation libs.room.runtime
implementation libs.room.base
implementation libs.room.paging
ksp libs.room.compiler
// own libraries
implementation libs.bitfire.cert4android
implementation(libs.bitfire.dav4jvm) {
exclude group: "junit"
}
implementation libs.bitfire.ical4android
implementation libs.bitfire.vcard4android
// third-party libs
implementation libs.openid.appauth
implementation libs.appintro
implementation libs.mikepenz.aboutLibraries
implementation libs.commons.collections
implementation libs.commons.io
implementation libs.commons.lang
implementation libs.commons.text
implementation libs.dnsjava
implementation libs.jaredrummler.colorpicker
implementation libs.nsk90.kstatemachine
implementation libs.okhttp.base
implementation libs.okhttp.brotli
implementation libs.okhttp.logging
// for tests
androidTestImplementation libs.androidx.arch.core.testing
androidTestImplementation libs.androidx.test.core
androidTestImplementation libs.androidx.test.junit
androidTestImplementation libs.androidx.test.rules
androidTestImplementation libs.androidx.test.runner
androidTestImplementation libs.androidx.work.testing
androidTestImplementation libs.hilt.android.testing
androidTestImplementation libs.junit
androidTestImplementation libs.mockk.android
androidTestImplementation libs.okhttp.mockwebserver
androidTestImplementation libs.room.testing
testImplementation libs.junit
testImplementation libs.okhttp.mockwebserver
}

214
app/build.gradle.kts Normal file
View file

@ -0,0 +1,214 @@
/***************************************************************************************************
* Copyright © All Contributors. See LICENSE and AUTHORS in the root directory for details.
**************************************************************************************************/
plugins {
alias(libs.plugins.mikepenz.aboutLibraries)
alias(libs.plugins.android.application)
alias(libs.plugins.hilt)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.kapt)
alias(libs.plugins.ksp)
}
aboutLibraries {
// This means that we have to generate the dependencies explicitly:
// ./gradlew --no-configuration-cache --no-build-cache -PaboutLibraries.exportPath=src/main/res/raw/ app:exportLibraryDefinitions
registerAndroidTasks = false
}
// Android configuration
android {
compileSdk = 34
defaultConfig {
applicationId = "at.bitfire.davdroid"
versionCode = 403130100
versionName = "4.3.13.1"
buildConfigField("long", "buildTime", "${System.currentTimeMillis()}L")
setProperty("archivesBaseName", "davx5-ose-" + versionName)
minSdk = 24 // Android 7.0
targetSdk = 34 // Android 14
buildConfigField("String", "userAgent", "\"DAVx5\"")
testInstrumentationRunner = "at.bitfire.davdroid.CustomTestRunner"
}
compileOptions {
// enable because ical4android requires desugaring
isCoreLibraryDesugaringEnabled = true
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
buildFeatures {
buildConfig = true
compose = true
viewBinding = true
dataBinding = true
}
composeOptions {
kotlinCompilerExtensionVersion = libs.versions.compose.compiler.get()
}
// Java namespace for our classes (not to be confused with Android package ID)
namespace = "at.bitfire.davdroid"
flavorDimensions += "distribution"
productFlavors {
create("ose") {
dimension = "distribution"
versionNameSuffix = "-ose"
}
}
sourceSets {
getByName("androidTest") {
assets.srcDir("$projectDir/schemas")
}
}
signingConfigs {
create("bitfire") {
storeFile = file(System.getenv("ANDROID_KEYSTORE") ?: "/dev/null")
storePassword = System.getenv("ANDROID_KEYSTORE_PASSWORD")
keyAlias = System.getenv("ANDROID_KEY_ALIAS")
keyPassword = System.getenv("ANDROID_KEY_PASSWORD")
}
}
buildTypes {
getByName("release") {
isMinifyEnabled = true
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules-release.pro")
isShrinkResources = true
signingConfig = signingConfigs.findByName("bitfire")
}
}
lint {
disable += arrayOf("GoogleAppIndexingWarning", "ImpliedQuantity", "MissingQuantity", "MissingTranslation", "ExtraTranslation", "RtlEnabled", "RtlHardcoded", "Typos", "NullSafeMutableLiveData")
}
packaging {
resources {
excludes += arrayOf("META-INF/*.md")
}
}
androidResources {
generateLocaleConfig = true
}
}
ksp {
arg("room.schemaLocation", "$projectDir/schemas")
}
configurations {
configureEach {
// exclude modules which are in conflict with system libraries
exclude(module="commons-logging")
exclude(group="org.json", module="json")
// Groovy requires SDK 26+, and it's not required, so exclude it
exclude(group="org.codehaus.groovy")
}
}
dependencies {
// core
implementation(libs.kotlin.stdlib)
implementation(libs.kotlinx.coroutines)
coreLibraryDesugaring(libs.android.desugaring)
// Hilt
implementation(libs.hilt.android.base)
ksp(libs.androidx.hilt.compiler)
ksp(libs.hilt.android.compiler)
// support libs
implementation(libs.androidx.activityCompose)
implementation(libs.androidx.appcompat)
implementation(libs.androidx.browser)
implementation(libs.androidx.cardView)
implementation(libs.androidx.concurrentFuture)
implementation(libs.androidx.constraintLayout)
implementation(libs.androidx.core)
implementation(libs.androidx.fragment)
implementation(libs.androidx.hilt.work)
implementation(libs.androidx.lifecycle.viewmodel.base)
implementation(libs.androidx.lifecycle.viewmodel.compose)
implementation(libs.androidx.paging)
implementation(libs.androidx.preference)
implementation(libs.androidx.security)
implementation(libs.androidx.swiperefreshlayout)
implementation(libs.androidx.work.base)
implementation(libs.android.flexbox)
implementation(libs.android.material)
// Jetpack Compose
implementation(libs.compose.accompanist.permissions)
implementation(libs.compose.accompanist.themeAdapter)
implementation(platform(libs.compose.bom))
implementation(libs.compose.material)
implementation(libs.compose.materialIconsExtended)
implementation(libs.compose.runtime.livedata)
debugImplementation(libs.compose.ui.tooling)
implementation(libs.compose.ui.toolingPreview)
// Jetpack Room
implementation(libs.room.runtime)
implementation(libs.room.base)
implementation(libs.room.paging)
ksp(libs.room.compiler)
// own libraries
implementation(libs.bitfire.cert4android)
implementation(libs.bitfire.dav4jvm) {
exclude(group="junit")
}
implementation(libs.bitfire.ical4android)
implementation(libs.bitfire.vcard4android)
// third-party libs
implementation(libs.openid.appauth)
implementation(libs.appintro)
implementation(libs.mikepenz.aboutLibraries)
implementation(libs.commons.collections)
@Suppress("RedundantSuppression")
implementation(libs.commons.io)
implementation(libs.commons.lang)
implementation(libs.commons.text)
@Suppress("RedundantSuppression")
implementation(libs.dnsjava)
implementation(libs.jaredrummler.colorpicker)
implementation(libs.nsk90.kstatemachine)
implementation(libs.okhttp.base)
implementation(libs.okhttp.brotli)
implementation(libs.okhttp.logging)
// for tests
androidTestImplementation(libs.androidx.arch.core.testing)
androidTestImplementation(libs.androidx.test.core)
androidTestImplementation(libs.androidx.test.junit)
androidTestImplementation(libs.androidx.test.rules)
androidTestImplementation(libs.androidx.test.runner)
androidTestImplementation(libs.androidx.work.testing)
androidTestImplementation(libs.hilt.android.testing)
androidTestImplementation(libs.junit)
androidTestImplementation(libs.mockk.android)
androidTestImplementation(libs.okhttp.mockwebserver)
androidTestImplementation(libs.room.testing)
testImplementation(libs.junit)
testImplementation(libs.okhttp.mockwebserver)
}

View file

@ -37,19 +37,21 @@ commons-io = "2.8.0"
commons-text = "1.11.0"
compose-accompanist = "0.34.0"
compose-bom = "2024.02.00"
# Keep this in sync with Kotlin version:
# https://developer.android.com/jetpack/androidx/releases/compose-kotlin
compose-compiler = "1.5.8"
# don't update to dnsjava 3.x until API level 26 (Android 8) is the minimum API [https://github.com/bitfireAT/davx5/issues/453]
dnsjava = "2.1.9"
hilt = "2.50"
jaredrummler-colorpicker = "1.1.0"
# keep in sync with * app/build.gradle composeOptions.kotlinCompilerExtensionVersion
# keep in sync with * app/build.gradle.kts composeOptions.kotlinCompilerExtensionVersion
# * com.google.devtools.ksp at the end of this file
kotlin = "1.9.22"
kotlinx-coroutines = "1.7.3"
kotlinx-coroutines = "1.8.0"
# see https://github.com/google/ksp/releases for version numbers
ksp = "1.9.22-1.0.17"
mikepenz-aboutLibraries = "10.10.0"
nsk90-kstatemachine = "0.26.0"
nsk90-kstatemachine = "0.27.0"
mockk = "1.13.9"
okhttp = "4.12.0"
openid-appauth = "0.11.1"

View file

@ -4,7 +4,7 @@ pluginManagement {
mavenCentral()
// AboutLibraries
maven { url "https://plugins.gradle.org/m2/" }
maven("https://plugins.gradle.org/m2/")
}
}
@ -15,8 +15,8 @@ dependencyResolutionManagement {
mavenCentral()
// AppIntro, dav4jvm
maven { url "https://jitpack.io" }
maven("https://jitpack.io")
}
}
include ':app'
include(":app")