Skip to content

Commit

Permalink
Migrate version catalog (ankidroid#15966)
Browse files Browse the repository at this point in the history
* version catalog conflict
 solve

* implementing version catalog for stable versioning between modules

* implementing version catalog for stable versioning between modules

---------

Co-authored-by: abdelrahmanesam <abdelrahmanesam>
  • Loading branch information
AbdelrahmanEsam authored Mar 27, 2024
1 parent e8a8994 commit bb0c4a8
Show file tree
Hide file tree
Showing 8 changed files with 304 additions and 149 deletions.
186 changes: 93 additions & 93 deletions AnkiDroid/build.gradle
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
plugins {
// Gradle plugin portal
id 'com.github.triplet.play' version '3.9.0'
id 'com.android.application'
id 'app.brant.amazonappstorepublisher'
alias(libs.plugins.tripletPlay)
alias(libs.plugins.android.application)
alias(libs.plugins.amazonappstorepublisher)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.parcelize)
alias(libs.plugins.kotlin.serialization)
id 'idea'
id 'kotlin-android'
id 'kotlin-parcelize'
id 'org.jetbrains.kotlin.plugin.serialization'
}

repositories {
Expand Down Expand Up @@ -46,7 +46,7 @@ android {
applicationId "com.ichi2.anki"
buildConfigField "Boolean", "CI", (System.getenv("CI") == "true").toString()
buildConfigField "String", "ACRA_URL", '"https://ankidroid.org/acra/report"'
buildConfigField "String", "BACKEND_VERSION", "\"$ankidroid_backend_version\""
buildConfigField "String", "BACKEND_VERSION", "\"${libs.versions.ankidroidBackend}\""
buildConfigField "Boolean", "ENABLE_LEAK_CANARY", "false"
buildConfigField "Boolean", "ALLOW_UNSAFE_MIGRATION", "false"
buildConfigField "String", "GIT_COMMIT_HASH", "\"${gitCommitHash()}\""
Expand Down Expand Up @@ -298,39 +298,40 @@ dependencies {
}
}
api project(":api")
implementation libs.androidx.work.runtime
lintChecks project(":lint-rules")
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs_nio:2.0.4'

compileOnly 'org.jetbrains:annotations:24.1.0'
compileOnly "com.google.auto.service:auto-service-annotations:1.1.1"
annotationProcessor "com.google.auto.service:auto-service:1.1.1"

implementation 'androidx.activity:activity-ktx:1.8.2'
implementation 'androidx.annotation:annotation:1.7.1'
implementation 'androidx.appcompat:appcompat:1.7.0-alpha03'
implementation 'androidx.browser:browser:1.7.0'
implementation "androidx.core:core-ktx:1.12.0"
implementation 'androidx.exifinterface:exifinterface:1.3.7'
implementation "androidx.fragment:fragment-ktx:$fragments_version"
debugImplementation("androidx.fragment:fragment-testing-manifest:$fragments_version")
implementation 'androidx.media:media:1.7.0'
implementation "androidx.preference:preference-ktx:1.2.1"
implementation 'androidx.recyclerview:recyclerview:1.3.2'
implementation 'androidx.sqlite:sqlite-framework:2.4.0'
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
implementation 'androidx.viewpager2:viewpager2:1.0.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.webkit:webkit:1.10.0'
implementation 'com.google.android.material:material:1.11.0'
implementation 'com.vanniktech:android-image-cropper:4.5.0'
implementation 'org.nanohttpd:nanohttpd:2.3.1'
implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3"
implementation 'com.squareup:seismic:1.0.3'
implementation "androidx.work:work-runtime-ktx:2.9.0"
coreLibraryDesugaring libs.desugar.jdk.libs.nio

compileOnly libs.jetbrains.annotations
compileOnly libs.auto.service.annotations
annotationProcessor libs.auto.service

implementation libs.androidx.activity.ktx
implementation libs.androidx.annotation
implementation libs.androidx.appcompat
implementation libs.androidx.browser
implementation libs.androidx.core.ktx
implementation libs.androidx.exifinterface
implementation libs.androidx.fragment.ktx
implementation libs.androidx.media
implementation libs.androidx.preference.ktx
implementation libs.androidx.recyclerview
implementation libs.androidx.sqlite.framework
implementation libs.androidx.swiperefreshlayout
implementation libs.androidx.viewpager2
implementation libs.androidx.constraintlayout
implementation libs.androidx.webkit
implementation libs.google.material
implementation libs.android.image.cropper
implementation libs.nanohttpd
implementation libs.kotlinx.serialization.json
implementation libs.seismic

debugImplementation libs.androidx.fragment.testing.manifest

// Backend libraries

implementation 'com.google.protobuf:protobuf-kotlin-lite:3.25.3' // This is required when loading from a file
implementation libs.protobuf.kotlin.lite // This is required when loading from a file

Properties localProperties = new Properties()
if (project.rootProject.file('local.properties').exists()) {
Expand All @@ -340,82 +341,81 @@ dependencies {
implementation files("../../Anki-Android-Backend/rsdroid/build/outputs/aar/rsdroid-release.aar")
testImplementation files("../../Anki-Android-Backend/rsdroid-testing/build/libs/rsdroid-testing.jar")
} else {
implementation "io.github.david-allison-1:anki-android-backend:$ankidroid_backend_version"
testImplementation "io.github.david-allison-1:anki-android-backend-testing:$ankidroid_backend_version"
implementation libs.ankiBackend.backend
implementation libs.ankiBackend.testing
}

// May need a resolution strategy for support libs to our versions
implementation "ch.acra:acra-http:$acra_version"
implementation "ch.acra:acra-dialog:$acra_version"
implementation "ch.acra:acra-toast:$acra_version"
implementation "ch.acra:acra-limiter:$acra_version"

implementation 'com.afollestad.material-dialogs:core:3.3.0'
implementation 'com.afollestad.material-dialogs:input:3.3.0'
implementation 'org.apache.commons:commons-compress:1.26.0'
implementation 'org.apache.commons:commons-collections4:4.4' // SetUniqueList
implementation 'commons-io:commons-io:2.15.1' // FileUtils.contentEquals
implementation 'net.mikehardy:google-analytics-java7:2.0.13'
implementation 'com.squareup.okhttp3:okhttp:4.12.0'
implementation 'com.arcao:slf4j-timber:3.1'
implementation 'com.jakewharton.timber:timber:5.0.1'
implementation 'org.jsoup:jsoup:1.17.2'
implementation "com.github.zafarkhaja:java-semver:0.10.2" // For AnkiDroid JS API Versioning
implementation 'com.drakeet.drawer:drawer:1.0.3'
implementation 'uk.co.samuelwall:material-tap-target-prompt:3.3.2'
implementation 'com.github.mrudultora:Colorpicker:1.2.0'
implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
implementation "org.jetbrains.kotlin:kotlin-test:$kotlin_version"
implementation 'com.github.ByteHamster:SearchPreference:2.5.1'
implementation libs.acra.limiter
implementation libs.acra.toast
implementation libs.acra.dialog
implementation libs.acra.http

implementation libs.materialDialogs.core
implementation libs.materialDialogs.input
implementation libs.commons.compress
implementation libs.commons.collections4 // SetUniqueList
implementation libs.commons.io // FileUtils.contentEquals
implementation libs.mikehardy.google.analytics.java7
implementation libs.okhttp
implementation libs.slf4j.timber
implementation libs.jakewharton.timber
implementation libs.jsoup
implementation libs.java.semver // For AnkiDroid JS API Versioning
implementation libs.drakeet.drawer
implementation libs.tapTargetPrompt
implementation libs.colorpicker
implementation libs.kotlin.reflect
implementation libs.kotlin.test
implementation libs.search.preference

// Cannot use debugImplementation since classes need to be imported in AnkiDroidApp
// and there's no no-op version for release build. Usage has been disabled for release
// build via AnkiDroidApp.
implementation 'com.squareup.leakcanary:leakcanary-android:2.13'
implementation libs.leakcanary.android

testImplementation project(':testlib')

// A path for a testing library which provide Parameterized Test
testImplementation "org.junit.jupiter:junit-jupiter:$junit_version"
testImplementation "org.junit.jupiter:junit-jupiter-params:$junit_version"
testImplementation "org.junit.vintage:junit-vintage-engine:$junit_version"
testImplementation 'org.mockito:mockito-inline:5.2.0'
testImplementation "org.mockito.kotlin:mockito-kotlin:5.2.1"
testImplementation "org.hamcrest:hamcrest:$hamcrest_version"
testImplementation 'net.lachlanmckee:timber-junit-rule:1.0.1'
testImplementation libs.junit.jupiter
testImplementation libs.junit.jupiter.params
testImplementation libs.junit.vintage.engine
testImplementation libs.mockito.inline
testImplementation libs.mockito.kotlin
testImplementation libs.hamcrest
// robolectricDownloader.gradle *may* need a new SDK jar entry if they release one or if we change targetSdk. Instructions in that gradle file.
testImplementation "org.robolectric:robolectric:$robolectric_version"
testImplementation "androidx.test:core:$androidx_test_version"
testImplementation "androidx.test.ext:junit:$androidx_test_junit_version"
testImplementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
testImplementation "org.jetbrains.kotlin:kotlin-test:$kotlin_version"
testImplementation "org.jetbrains.kotlin:kotlin-test-junit5:$kotlin_version"
testImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:$coroutines_version"
testImplementation "io.mockk:mockk:1.13.9"
testImplementation 'org.apache.commons:commons-exec:1.4.0' // obtaining the OS
testImplementation("androidx.fragment:fragment-testing:$fragments_version")
testImplementation libs.robolectric
testImplementation libs.androidx.test.core
testImplementation libs.androidx.test.junit
testImplementation libs.kotlin.reflect
testImplementation libs.kotlin.test
testImplementation libs.kotlin.test.junit5
testImplementation libs.kotlinx.coroutines.test
testImplementation libs.mockk
testImplementation libs.commons.exec // obtaining the OS
testImplementation libs.androidx.fragment.testing
// in a JvmTest we need org.json.JSONObject to not be mocked
testImplementation 'org.json:json:20240205'
testImplementation 'io.github.ivanshafran:shared-preferences-mock:1.2.4'
testImplementation "androidx.test:runner:$androidx_test_version"
testImplementation "androidx.test:rules:$androidx_test_version"
testImplementation "androidx.test.espresso:espresso-core:$espresso_version"
testImplementation("androidx.test.espresso:espresso-contrib:$espresso_version") {
testImplementation libs.json
testImplementation libs.ivanshafran.shared.preferences.mock
testImplementation libs.androidx.test.runner
testImplementation libs.androidx.test.rules
testImplementation libs.androidx.espresso.core
testImplementation(libs.androidx.espresso.contrib) {
exclude module: "protobuf-lite"
}

androidTestImplementation project(':testlib')

// May need a resolution strategy for support libs to our versions
androidTestImplementation "androidx.test.espresso:espresso-core:$espresso_version"
androidTestImplementation("androidx.test.espresso:espresso-contrib:$espresso_version") {
androidTestImplementation libs.androidx.espresso.core
androidTestImplementation(libs.androidx.espresso.contrib) {
exclude module: "protobuf-lite"
}
androidTestImplementation "androidx.test:core:$androidx_test_version"
androidTestImplementation "androidx.test.ext:junit:$androidx_test_junit_version"
androidTestImplementation "androidx.test:rules:$androidx_test_version"
androidTestImplementation "androidx.test.uiautomator:uiautomator:$uiautomator_version"
androidTestImplementation "org.jetbrains.kotlin:kotlin-test:$kotlin_version"
androidTestImplementation "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"
androidTestImplementation("androidx.fragment:fragment-testing:$fragments_version")
androidTestImplementation libs.androidx.test.core
androidTestImplementation libs.androidx.test.junit
androidTestImplementation libs.androidx.test.rules
androidTestImplementation libs.androidx.uiautomator
androidTestImplementation libs.kotlin.test
androidTestImplementation libs.kotlin.test.junit
androidTestImplementation libs.androidx.fragment.testing
}
2 changes: 1 addition & 1 deletion AnkiDroid/proguard-rules.pro
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# By default, the flags in this file are appended to flags specified
# in C:\Program Files (x86)\Android\android-sdk/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
# directive in build.gradle.kts.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
Expand Down
19 changes: 9 additions & 10 deletions api/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import com.android.build.gradle.internal.tasks.factory.dependsOn

plugins {
alias(libs.plugins.android.library)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.dokka)
id("maven-publish")
id("com.android.library")
id("kotlin-android")
id("org.jetbrains.dokka")
}

group = "com.ichi2.anki"
Expand Down Expand Up @@ -67,13 +67,12 @@ android {
apply(from = "../lint.gradle")

dependencies {
implementation("androidx.annotation:annotation:1.7.0")
implementation("org.jetbrains.kotlin:kotlin-stdlib:${rootProject.extra["kotlin_version"]}")

testImplementation("org.junit.jupiter:junit-jupiter:${rootProject.extra["junit_version"]}")
testImplementation("org.junit.vintage:junit-vintage-engine:${rootProject.extra["junit_version"]}")
testImplementation("org.robolectric:robolectric:${rootProject.extra["robolectric_version"]}")
testImplementation("org.jetbrains.kotlin:kotlin-test:${rootProject.extra["kotlin_version"]}")
implementation(libs.androidx.annotation)
implementation(libs.kotlin.stdlib)
testImplementation(libs.junit.jupiter)
testImplementation(libs.junit.vintage.engine)
testImplementation(libs.robolectric)
testImplementation(libs.kotlin.test)

lintChecks(project(":lint-rules"))
}
Expand Down
35 changes: 8 additions & 27 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,27 +1,8 @@
import org.gradle.internal.jvm.Jvm
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import org.jetbrains.kotlin.gradle.tasks.KotlinCompilerExecutionStrategy

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
// The version for the Kotlin plugin and dependencies
// If changing this, make sure to update org.jetbrains.kotlin.plugin.serialization version too
ext.kotlin_version = '1.9.22'
ext.lint_version = '31.1.1'
ext.acra_version = '5.11.3'
ext.ankidroid_backend_version = '0.1.34-anki23.12.1'
ext.hamcrest_version = '2.2'
ext.junit_version = '5.10.2'
ext.coroutines_version = '1.8.0'
ext.fragments_version = "1.6.2"
ext.espresso_version = '3.5.1'
ext.androidx_test_version = '1.5.0'
ext.androidx_test_junit_version = '1.1.5'
ext.robolectric_version = '4.11.1'
ext.android_gradle_plugin = "8.2.2"
ext.dokka_version = "1.9.10" // not the same with kotlin version!
ext.uiautomator_version = "2.3.0-rc01"

configurations.configureEach {
resolutionStrategy.eachDependency { details ->
if (details.requested.group == 'org.jetbrains.kotlinx'
Expand All @@ -34,14 +15,14 @@ buildscript {
}

plugins {
id 'com.android.application' version "$android_gradle_plugin" apply false
id 'com.android.library' version "$android_gradle_plugin" apply false
id 'org.jetbrains.kotlin.jvm' version "$kotlin_version" apply false
id 'org.jetbrains.kotlin.android' version "$kotlin_version" apply false
id 'org.jetbrains.kotlin.plugin.parcelize' version "$kotlin_version" apply false
id 'org.jetbrains.kotlin.plugin.serialization' version "$kotlin_version" apply false
id 'org.jlleitschuh.gradle.ktlint' version '11.6.1' apply false
id 'org.jetbrains.dokka' version "$dokka_version" apply false
alias(libs.plugins.android.application) apply false
alias(libs.plugins.android.library) apply false
alias(libs.plugins.kotlin.android) apply false
alias(libs.plugins.kotlin.parcelize) apply false
alias(libs.plugins.kotlin.jvm) apply false
alias(libs.plugins.kotlin.serialization) apply false
alias(libs.plugins.ktlint) apply false
alias(libs.plugins.dokka) apply false
}

Properties localProperties = new Properties()
Expand Down
Loading

0 comments on commit bb0c4a8

Please sign in to comment.