diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 4784727d1..7a0a97692 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,8 +1,8 @@ import com.android.build.gradle.internal.tasks.factory.dependsOn plugins { - id("com.android.application") - id("org.jetbrains.kotlin.android") + alias(libs.plugins.com.android.application) + alias(libs.plugins.org.jetbrains.kotlin.android) } kotlin { @@ -113,43 +113,38 @@ android { dependencies { // AndroidX - implementation("androidx.appcompat:appcompat:1.7.1") - implementation("androidx.constraintlayout:constraintlayout:2.2.1") - implementation("androidx.core:core-ktx:1.17.0") - implementation("androidx.core:core-remoteviews:1.1.0") - implementation("androidx.core:core-splashscreen:1.0.1") - implementation("androidx.exifinterface:exifinterface:1.4.1") - implementation("androidx.palette:palette:1.0.0") - implementation("androidx.preference:preference:1.2.1") - implementation("com.google.android.material:material:1.13.0") - coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.5") + implementation(libs.androidx.appcompat.appcompat) + implementation(libs.androidx.constraintlayout.constraintlayout) + implementation(libs.androidx.core.core.ktx) + implementation(libs.androidx.core.core.remoteviews) + implementation(libs.androidx.core.core.splashscreen) + implementation(libs.androidx.exifinterface.exifinterface) + implementation(libs.androidx.palette.palette) + implementation(libs.androidx.preference.preference) + implementation(libs.com.google.android.material.material) + coreLibraryDesugaring(libs.com.android.tools.desugar.jdk.libs) // Third-party - implementation("com.journeyapps:zxing-android-embedded:4.3.0@aar") - implementation("com.github.yalantis:ucrop:2.2.11") - implementation("com.google.zxing:core:3.5.3") - implementation("org.apache.commons:commons-csv:1.9.0") - implementation("com.jaredrummler:colorpicker:1.1.0") - implementation("net.lingala.zip4j:zip4j:2.11.5") + implementation(libs.com.journeyapps.zxing.android.embedded) + implementation(libs.com.github.yalantis.ucrop) + implementation(libs.com.google.zxing.core) + implementation(libs.org.apache.commons.commons.csv) + implementation(libs.com.jaredrummler.colorpicker) + implementation(libs.net.lingala.zip4j.zip4j) // Crash reporting - val acraVersion = "5.13.1" - implementation("ch.acra:acra-mail:$acraVersion") - implementation("ch.acra:acra-dialog:$acraVersion") + implementation(libs.bundles.acra) // Testing - val androidXTestVersion = "1.7.0" - val junitVersion = "4.13.2" - testImplementation("androidx.test:core:$androidXTestVersion") - testImplementation("junit:junit:$junitVersion") - testImplementation("org.robolectric:robolectric:4.16") + testImplementation(libs.androidx.test.core) + testImplementation(libs.junit.junit) + testImplementation(libs.org.robolectric.robolectric) - androidTestImplementation("androidx.test:core:$androidXTestVersion") - androidTestImplementation("junit:junit:$junitVersion") - androidTestImplementation("androidx.test.ext:junit:1.3.0") - androidTestImplementation("androidx.test:runner:$androidXTestVersion") - androidTestImplementation("androidx.test.uiautomator:uiautomator:2.3.0") - androidTestImplementation("androidx.test.espresso:espresso-core:3.7.0") + androidTestImplementation(libs.bundles.androidx.test) + androidTestImplementation(libs.junit.junit) + androidTestImplementation(libs.androidx.test.ext.junit) + androidTestImplementation(libs.androidx.test.uiautomator.uiautomator) + androidTestImplementation(libs.androidx.test.espresso.espresso.core) } tasks.register("copyRawResFiles", Copy::class) { diff --git a/build.gradle.kts b/build.gradle.kts index 16196eaa0..e6d03252e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,8 +1,8 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { - id("com.android.application") version "8.13.0" apply false - id("org.jetbrains.kotlin.android") version "2.2.20" apply false + alias(libs.plugins.com.android.application) apply false + alias(libs.plugins.org.jetbrains.kotlin.android) apply false } allprojects { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 000000000..ebe696a4d --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,46 @@ +[versions] +# Third-party +acra = "5.13.1" + +# Testing +androidXTest = "1.7.0" + +[libraries] +# AndroidX +androidx-appcompat-appcompat = { group = "androidx.appcompat", name = "appcompat", version = "1.7.1" } +androidx-constraintlayout-constraintlayout = { group = "androidx.constraintlayout", name = "constraintlayout", version = "2.2.1" } +androidx-core-core-ktx = { group = "androidx.core", name = "core-ktx", version = "1.17.0" } +androidx-core-core-remoteviews = { group = "androidx.core", name = "core-remoteviews", version = "1.1.0" } +androidx-core-core-splashscreen = { group = "androidx.core", name = "core-splashscreen", version = "1.0.1" } +androidx-exifinterface-exifinterface = { group = "androidx.exifinterface", name = "exifinterface", version = "1.4.1" } +androidx-palette-palette = { group = "androidx.palette", name = "palette", version = "1.0.0" } +androidx-preference-preference = { group = "androidx.preference", name = "preference", version = "1.2.1" } +com-google-android-material-material = { group = "com.google.android.material", name = "material", version = "1.13.0" } +com-android-tools-desugar_jdk_libs = { group = "com.android.tools", name = "desugar_jdk_libs", version = "2.1.5" } + +# Third-party +com-journeyapps-zxing_android_embedded = { group = "com.journeyapps", name = "zxing-android-embedded", version = "4.3.0" } +com-github-yalantis-ucrop = { group = "com.github.yalantis", name = "ucrop", version = "2.2.11" } +com-google-zxing-core = { group = "com.google.zxing", name = "core", version = "3.5.3" } +org-apache-commons-commons_csv = { group = "org.apache.commons", name = "commons-csv", version = "1.9.0" } +com-jaredrummler-colorpicker = { group = "com.jaredrummler", name = "colorpicker", version = "1.1.0" } +net-lingala-zip4j-zip4j = { group = "net.lingala.zip4j", name = "zip4j", version = "2.11.5" } +ch-acra-acra-mail = { group = "ch.acra", name = "acra-mail", version.ref = "acra" } +ch-acra-acra-dialog = { group = "ch.acra", name = "acra-dialog", version.ref = "acra" } + +# Testing +androidx-test-core = { group = "androidx.test", name = "core", version.ref = "androidXTest" } +androidx-test-runner = { group = "androidx.test", name = "runner", version.ref = "androidXTest" } +androidx-test-ext-junit = { group = "androidx.test.ext", name = "junit", version = "1.3.0" } +androidx-test-uiautomator-uiautomator = { group = "androidx.test.uiautomator", name = "uiautomator", version = "2.3.0" } +androidx-test-espresso-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version = "3.7.0" } +junit-junit = { group = "junit", name = "junit", version = "4.13.2" } +org-robolectric-robolectric = { group = "org.robolectric", name = "robolectric", version = "4.16" } + +[plugins] +com-android-application = { id = "com.android.application", version = "8.13.0" } +org-jetbrains-kotlin-android = { id = "org.jetbrains.kotlin.android", version = "2.2.20" } + +[bundles] +acra = ["ch-acra-acra-mail", "ch-acra-acra-dialog"] +androidx-test = ["androidx-test-core", "androidx-test-runner"]