diff --git a/app/build.gradle b/app/build.gradle index 6d055a77b..cac9707de 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -115,86 +115,83 @@ dependencies { exclude group: 'org.json', module: 'json' } - coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.2' - implementation 'org.jetbrains.kotlin:kotlin-stdlib:2.0.21' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0' - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-guava:1.9.0' + coreLibraryDesugaring libs.desugar.jdk.libs + implementation libs.kotlin.stdlib + implementation libs.kotlinx.coroutines.android + implementation libs.kotlinx.coroutines.guava - implementation 'androidx.appcompat:appcompat:1.7.0' - implementation 'androidx.core:core-ktx:1.15.0' - implementation 'androidx.activity:activity-ktx:1.9.3' - implementation 'androidx.fragment:fragment-ktx:1.8.5' - implementation 'androidx.transition:transition-ktx:1.5.1' - implementation 'androidx.collection:collection-ktx:1.4.5' - implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.7' - implementation 'androidx.lifecycle:lifecycle-service:2.8.7' - implementation 'androidx.lifecycle:lifecycle-process:2.8.7' - implementation 'androidx.constraintlayout:constraintlayout:2.2.0' - implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0' - implementation 'androidx.recyclerview:recyclerview:1.3.2' - implementation 'androidx.viewpager2:viewpager2:1.1.0' - implementation 'androidx.preference:preference-ktx:1.2.1' - implementation 'androidx.biometric:biometric-ktx:1.2.0-alpha05' - implementation 'com.google.android.material:material:1.12.0' - implementation 'androidx.lifecycle:lifecycle-common-java8:2.8.7' - implementation 'androidx.webkit:webkit:1.12.1' + implementation libs.appcompat + implementation libs.core.ktx + implementation libs.activity.ktx + implementation libs.fragment.ktx + implementation libs.transition.ktx + implementation libs.collection.ktx + implementation libs.lifecycle.viewmodel.ktx + implementation libs.lifecycle.service + implementation libs.lifecycle.process + implementation libs.androidx.constraintlayout + implementation libs.androidx.swiperefreshlayout + implementation libs.androidx.recyclerview + implementation libs.androidx.viewpager2 + implementation libs.androidx.preference.ktx + implementation libs.androidx.biometric.ktx + implementation libs.material + implementation libs.androidx.lifecycle.common.java8 + implementation libs.androidx.webkit - implementation 'androidx.work:work-runtime:2.10.0' + implementation libs.androidx.work.runtime //noinspection GradleDependency - implementation('com.google.guava:guava:33.3.1-android') { + implementation(libs.guava) { exclude group: 'com.google.guava', module: 'failureaccess' exclude group: 'org.checkerframework', module: 'checker-qual' exclude group: 'com.google.j2objc', module: 'j2objc-annotations' } - implementation 'androidx.room:room-runtime:2.6.1' - implementation 'androidx.room:room-ktx:2.6.1' - ksp 'androidx.room:room-compiler:2.6.1' + implementation libs.androidx.room.runtime + implementation libs.androidx.room.ktx + ksp libs.androidx.room.compiler - implementation 'com.squareup.okhttp3:okhttp:4.12.0' - implementation 'com.squareup.okhttp3:okhttp-tls:4.12.0' - implementation 'com.squareup.okhttp3:okhttp-dnsoverhttps:4.12.0' - implementation 'com.squareup.okio:okio:3.9.1' + implementation libs.okhttp + implementation libs.okhttp.tls + implementation libs.okhttp.dnsoverhttps + implementation libs.okio - implementation 'com.hannesdorfmann:adapterdelegates4-kotlin-dsl:4.3.2' - implementation 'com.hannesdorfmann:adapterdelegates4-kotlin-dsl-viewbinding:4.3.2' + implementation libs.adapterdelegates4.kotlin.dsl + implementation libs.adapterdelegates4.kotlin.dsl.viewbinding - implementation 'com.google.dagger:hilt-android:2.52' - kapt 'com.google.dagger:hilt-compiler:2.52' - implementation 'androidx.hilt:hilt-work:1.2.0' - kapt 'androidx.hilt:hilt-compiler:1.2.0' + implementation libs.hilt.android + kapt libs.hilt.compiler + implementation libs.androidx.hilt.work + kapt libs.androidx.hilt.compiler - implementation 'io.coil-kt.coil3:coil-core:3.0.0-rc02' - implementation 'io.coil-kt.coil3:coil-network-okhttp:3.0.0-rc02' - implementation 'io.coil-kt.coil3:coil-gif:3.0.0-rc02' - implementation 'io.coil-kt.coil3:coil-svg:3.0.0-rc02' - implementation 'org.aomedia.avif.android:avif:1.1.1.14d8e3c4' - implementation 'com.github.KotatsuApp:subsampling-scale-image-view:d1d10a6975' - implementation 'com.github.solkin:disk-lru-cache:1.4' - implementation 'io.noties.markwon:core:4.6.2' + implementation libs.coil.base + implementation libs.coil.svg + implementation libs.subsampling.scale.image.view + implementation libs.disk.lru.cache + implementation libs.core - implementation 'ch.acra:acra-http:5.12.0' - implementation 'ch.acra:acra-dialog:5.12.0' + implementation libs.acra.http + implementation libs.acra.dialog - implementation 'org.conscrypt:conscrypt-android:2.5.3' + implementation libs.conscrypt.android - debugImplementation 'com.squareup.leakcanary:leakcanary-android:3.0-alpha-8' - debugImplementation 'com.github.Koitharu:WorkInspector:5778dd1747' + debugImplementation libs.leakcanary.android + debugImplementation libs.workinspector - testImplementation 'junit:junit:4.13.2' - testImplementation 'org.json:json:20240303' - testImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-test:1.9.0' + testImplementation libs.junit + testImplementation libs.json + testImplementation libs.kotlinx.coroutines.test - androidTestImplementation 'androidx.test:runner:1.6.2' - androidTestImplementation 'androidx.test:rules:1.6.1' - androidTestImplementation 'androidx.test:core-ktx:1.6.1' - androidTestImplementation 'androidx.test.ext:junit-ktx:1.2.1' + androidTestImplementation libs.androidx.runner + androidTestImplementation libs.androidx.rules + androidTestImplementation libs.androidx.core.ktx + androidTestImplementation libs.androidx.junit.ktx - androidTestImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-test:1.9.0' + androidTestImplementation libs.kotlinx.coroutines.test - androidTestImplementation 'androidx.room:room-testing:2.6.1' - androidTestImplementation 'com.squareup.moshi:moshi-kotlin:1.15.1' + androidTestImplementation libs.androidx.room.testing + androidTestImplementation libs.moshi.kotlin - androidTestImplementation 'com.google.dagger:hilt-android-testing:2.52' - kaptAndroidTest 'com.google.dagger:hilt-android-compiler:2.52' + androidTestImplementation libs.hilt.android.testing + kaptAndroidTest libs.hilt.android.compiler } diff --git a/build.gradle b/build.gradle index 06e9a988e..b73862b20 100644 --- a/build.gradle +++ b/build.gradle @@ -4,10 +4,10 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:8.7.2' - classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:2.0.21' - classpath 'com.google.dagger:hilt-android-gradle-plugin:2.52' - classpath 'com.google.devtools.ksp:symbol-processing-gradle-plugin:2.0.21-1.0.26' + classpath libs.gradle + classpath libs.kotlin.gradle.plugin + classpath libs.hilt.android.gradle.plugin + classpath libs.symbol.processing.gradle.plugin } } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 000000000..db7695813 --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,109 @@ +[versions] +acra = "5.12.0" +activity = "1.9.3" +adapterdelegates = "4.3.2" +appcompat = "1.7.0" +biometric = "1.2.0-alpha05" +coil = "3.0.1" +collections = "1.4.5" +conscrypt = "2.5.3" +constraintlayout = "2.2.0" +core = "4.6.2" +coreKtx = "1.15.0" +desugar = "2.1.3" +diskLruCache = "1.4" +fragment = "1.8.5" +gradle = "8.7.2" +guava = "33.3.1-android" +hilt = "2.52" +hiltWork = "1.2.0" +junit = "4.13.2" +json = "20240303" +junitKtx = "1.2.1" +kotlin = "2.0.21" +coroutines = "1.9.0" +leakcanary = "3.0-alpha-8" +lifecycle = "2.8.7" +material = "1.12.0" +moshi = "1.15.1" +okhttp = "4.12.0" +okio = "3.9.1" +preference = "1.2.1" +recyclerview = "1.3.2" +room = "2.6.1" +runner = "1.6.2" +rules = "1.6.1" +subsamplingScaleImageView = "e04098de68" +swiperefreshlayout = "1.1.0" +kspPlugin = "2.0.21-1.0.26" +transition = "1.5.1" +viewpager2 = "1.1.0" +webkit = "1.12.1" +workinspector = "5778dd1747" +workRuntime = "2.10.0" + +[libraries] +acra-dialog = { module = "ch.acra:acra-dialog", version.ref = "acra" } +acra-http = { module = "ch.acra:acra-http", version.ref = "acra" } +activity-ktx = { module = "androidx.activity:activity-ktx", version.ref = "activity" } +adapterdelegates4-kotlin-dsl = { module = "com.hannesdorfmann:adapterdelegates4-kotlin-dsl", version.ref = "adapterdelegates" } +adapterdelegates4-kotlin-dsl-viewbinding = { module = "com.hannesdorfmann:adapterdelegates4-kotlin-dsl-viewbinding", version.ref = "adapterdelegates" } +androidx-biometric-ktx = { module = "androidx.biometric:biometric-ktx", version.ref = "biometric" } +androidx-constraintlayout = { module = "androidx.constraintlayout:constraintlayout", version.ref = "constraintlayout" } +androidx-core-ktx = { module = "androidx.test:core-ktx", version.ref = "rules" } +androidx-hilt-compiler = { module = "androidx.hilt:hilt-compiler", version.ref = "hiltWork" } +androidx-hilt-work = { module = "androidx.hilt:hilt-work", version.ref = "hiltWork" } +androidx-junit-ktx = { module = "androidx.test.ext:junit-ktx", version.ref = "junitKtx" } +androidx-lifecycle-common-java8 = { module = "androidx.lifecycle:lifecycle-common-java8", version.ref = "lifecycle" } +androidx-preference-ktx = { module = "androidx.preference:preference-ktx", version.ref = "preference" } +androidx-recyclerview = { module = "androidx.recyclerview:recyclerview", version.ref = "recyclerview" } +androidx-room-compiler = { module = "androidx.room:room-compiler", version.ref = "room" } +androidx-room-ktx = { module = "androidx.room:room-ktx", version.ref = "room" } +androidx-room-runtime = { module = "androidx.room:room-runtime", version.ref = "room" } +androidx-room-testing = { module = "androidx.room:room-testing", version.ref = "room" } +androidx-rules = { module = "androidx.test:rules", version.ref = "rules" } +androidx-runner = { module = "androidx.test:runner", version.ref = "runner" } +androidx-swiperefreshlayout = { module = "androidx.swiperefreshlayout:swiperefreshlayout", version.ref = "swiperefreshlayout" } +androidx-viewpager2 = { module = "androidx.viewpager2:viewpager2", version.ref = "viewpager2" } +androidx-webkit = { module = "androidx.webkit:webkit", version.ref = "webkit" } +androidx-work-runtime = { module = "androidx.work:work-runtime", version.ref = "workRuntime" } +appcompat = { module = "androidx.appcompat:appcompat", version.ref = "appcompat" } +coil-base = { module = "io.coil-kt:coil-base", version.ref = "coil" } +coil-svg = { module = "io.coil-kt:coil-svg", version.ref = "coil" } +collection-ktx = { module = "androidx.collection:collection-ktx", version.ref = "collections" } +conscrypt-android = { module = "org.conscrypt:conscrypt-android", version.ref = "conscrypt" } +core = { module = "io.noties.markwon:core", version.ref = "core" } +core-ktx = { module = "androidx.core:core-ktx", version.ref = "coreKtx" } +desugar_jdk_libs = { module = "com.android.tools:desugar_jdk_libs", version.ref = "desugar" } +disk-lru-cache = { module = "com.github.solkin:disk-lru-cache", version.ref = "diskLruCache" } +fragment-ktx = { module = "androidx.fragment:fragment-ktx", version.ref = "fragment" } +gradle = { module = "com.android.tools.build:gradle", version.ref = "gradle" } +guava = { module = "com.google.guava:guava", version.ref = "guava" } +hilt-android = { module = "com.google.dagger:hilt-android", version.ref = "hilt" } +hilt-android-compiler = { module = "com.google.dagger:hilt-android-compiler", version.ref = "hilt" } +hilt-android-gradle-plugin = { module = "com.google.dagger:hilt-android-gradle-plugin", version.ref = "hilt" } +hilt-android-testing = { module = "com.google.dagger:hilt-android-testing", version.ref = "hilt" } +hilt-compiler = { module = "com.google.dagger:hilt-compiler", version.ref = "hilt" } +json = { module = "org.json:json", version.ref = "json" } +junit = { module = "junit:junit", version.ref = "junit" } +kotlin-gradle-plugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" } +kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib", version.ref = "kotlin" } +kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "coroutines" } +kotlinx-coroutines-guava = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-guava", version.ref = "coroutines" } +kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "coroutines" } +leakcanary-android = { module = "com.squareup.leakcanary:leakcanary-android", version.ref = "leakcanary" } +lifecycle-process = { module = "androidx.lifecycle:lifecycle-process", version.ref = "lifecycle" } +lifecycle-service = { module = "androidx.lifecycle:lifecycle-service", version.ref = "lifecycle" } +lifecycle-viewmodel-ktx = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref = "lifecycle" } +material = { module = "com.google.android.material:material", version.ref = "material" } +moshi-kotlin = { module = "com.squareup.moshi:moshi-kotlin", version.ref = "moshi" } +okhttp = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp" } +okhttp-dnsoverhttps = { module = "com.squareup.okhttp3:okhttp-dnsoverhttps", version.ref = "okhttp" } +okhttp-tls = { module = "com.squareup.okhttp3:okhttp-tls", version.ref = "okhttp" } +okio = { module = "com.squareup.okio:okio", version.ref = "okio" } +subsampling-scale-image-view = { module = "com.github.KotatsuApp:subsampling-scale-image-view", version.ref = "subsamplingScaleImageView" } +symbol-processing-gradle-plugin = { module = "com.google.devtools.ksp:symbol-processing-gradle-plugin", version.ref = "kspPlugin" } +transition-ktx = { module = "androidx.transition:transition-ktx", version.ref = "transition" } +workinspector = { module = "com.github.Koitharu:WorkInspector", version.ref = "workinspector" } + +[plugins]