diff --git a/.github/workflows/pr_workflow.yml b/.github/workflows/pr_workflow.yml index 5d369be..6435191 100644 --- a/.github/workflows/pr_workflow.yml +++ b/.github/workflows/pr_workflow.yml @@ -11,16 +11,16 @@ on: jobs: test: name: Run Static Analysis + Unit Tests - runs-on: ubuntu-18.04 + runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v2 - - name: set up JDK 11 + - name: set up JDK 17 uses: actions/setup-java@v1 with: - java-version: 11 + java-version: 17 - name: Decrypting api-properties run: gpg --quiet --batch --yes --decrypt --passphrase "${{ secrets.API_PROPERTIES_PASSPHRASE }}" project-config/api-properties/api.properties.asc > project-config/api-properties/api.properties diff --git a/.github/workflows/release_workflow.yml b/.github/workflows/release_workflow.yml index b90ee36..1d4328f 100644 --- a/.github/workflows/release_workflow.yml +++ b/.github/workflows/release_workflow.yml @@ -8,16 +8,16 @@ on: jobs: test: name: Release - Run Unit Tests - runs-on: ubuntu-18.04 + runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v2 - - name: set up JDK 11 + - name: set up JDK 17 uses: actions/setup-java@v1 with: - java-version: 11 + java-version: 17 - name: Decrypting api-properties run: gpg --quiet --batch --yes --decrypt --passphrase "${{ secrets.API_PROPERTIES_PASSPHRASE }}" project-config/api-properties/api.properties.asc > project-config/api-properties/api.properties @@ -27,15 +27,15 @@ jobs: apk: name: Generate APK - runs-on: ubuntu-18.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - - name: set up JDK 11 + - name: set up JDK 17 uses: actions/setup-java@v1 with: - java-version: 11 + java-version: 17 - name: Build debug APK run: ./gradlew assembleDebug --stacktrace diff --git a/.idea/compiler.xml b/.idea/compiler.xml index fb7f4a8..b589d56 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml new file mode 100644 index 0000000..0c0c338 --- /dev/null +++ b/.idea/deploymentTargetDropDown.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml index e1eea1d..fdf8d99 100644 --- a/.idea/kotlinc.xml +++ b/.idea/kotlinc.xml @@ -1,6 +1,6 @@ - \ No newline at end of file diff --git a/.idea/migrations.xml b/.idea/migrations.xml new file mode 100644 index 0000000..f8051a6 --- /dev/null +++ b/.idea/migrations.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index aedf81c..fcc8e53 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -50,6 +50,7 @@ dependencies { implementation libs.kotlin.stdlib implementation libs.coroutines.core + implementation platform(libs.koin.bom) implementation libs.koin.core implementation libs.koin.android diff --git a/build.gradle b/build.gradle index 8dbb300..0620e28 100644 --- a/build.gradle +++ b/build.gradle @@ -4,7 +4,7 @@ plugins { alias(libs.plugins.android.library) apply false alias(libs.plugins.kotlin.jvm) apply false alias(libs.plugins.kotlin.android) apply false - alias(libs.plugins.kotlin.kapt) + alias(libs.plugins.kotlin.ksp) apply false alias(libs.plugins.easylauncher) apply false alias(libs.plugins.gradle.deps.update) } @@ -20,13 +20,6 @@ apply from: "project-config/dependencies-checker/dependencies-checker.gradle" // Usage ./gradlew jacocoTestReport apply from: "$rootDir/quality/test-coverage-setup.gradle" -allprojects { - repositories { - mavenCentral() - google() - } -} - task installGitHooks(type: Exec) { group 'Quality' description 'Installs the git hooks' diff --git a/core-android/build.gradle b/core-android/build.gradle index 240b2e2..83794ba 100644 --- a/core-android/build.gradle +++ b/core-android/build.gradle @@ -28,6 +28,7 @@ android { dependencies { implementation libs.kotlin.stdlib + implementation platform(libs.koin.bom) implementation libs.koin.core implementation libs.retrofit diff --git a/gradle.properties b/gradle.properties index f996dae..0dd355c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -18,4 +18,7 @@ android.useAndroidX=true # Kotlin code style for this project: "official" or "obsolete": kotlin.code.style=official # Temporary solution for easylauncher plugin -android.disableResourceValidation=true \ No newline at end of file +android.disableResourceValidation=true +android.defaults.buildfeatures.buildconfig=true +android.nonTransitiveRClass=false +android.nonFinalResIds=false \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 6963b07..644d9e7 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,59 +1,61 @@ [versions] -gradleplugin = "7.4.1" -kotlin = "1.8.10" +gradleplugin = "8.2.2" +kotlin = "1.9.0" +ksp = "1.9.0-1.0.13" minSdk = "23" -compileSdk = "33" -compose = "1.4.2" +compileSdk = "34" +compose = "1.5.2" [libraries] # Kotlin kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib", version.ref = "kotlin" } kotlin-jdk = { module = "org.jetbrains.kotlin:kotlin-stdlib-jdk8", version.ref = "kotlin" } -coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version = "1.6.4" } -kotlin-result = { module = "com.michael-bull.kotlin-result:kotlin-result", version = "1.1.16" } +coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version = "1.8.0" } +kotlin-result = { module = "com.michael-bull.kotlin-result:kotlin-result", version = "1.1.18" } # Debug -leak-canary = { module = "com.squareup.leakcanary:leakcanary-android", version = "2.10" } +leak-canary = { module = "com.squareup.leakcanary:leakcanary-android", version = "2.13" } # Compose -compose-bom = { module = "androidx.compose:compose-bom", version = "2023.01.00" } +compose-bom = { module = "androidx.compose:compose-bom", version = "2024.02.01" } compose-ui = { module = "androidx.compose.ui:ui" } compose-foundation = { module = "androidx.compose.foundation:foundation" } compose-material = { module = "androidx.compose.material:material" } compose-materialIcons = { module = "androidx.compose.material:material-icons-core" } compose-materialIconsExt = { module = "androidx.compose.material:material-icons-extended" } compose-tooling = { module = "androidx.compose.ui:ui-tooling" } -compose-activity = { module = "androidx.activity:activity-compose", version = "1.6.1" } -compose-swipeRefresh = { module = "com.google.accompanist:accompanist-swiperefresh", version = "0.28.0" } +compose-activity = { module = "androidx.activity:activity-compose", version = "1.8.2" } +compose-swipeRefresh = { module = "com.google.accompanist:accompanist-swiperefresh", version = "0.34.0" } compose-collapsingToolbar = { module = "me.onebone:toolbar-compose", version = "2.3.5" } # Network related libraries retrofit = { module = "com.squareup.retrofit2:retrofit", version = "2.9.0" } -okhttp = { module = "com.squareup.okhttp3:okhttp", version = "4.10.0" } +okhttp = { module = "com.squareup.okhttp3:okhttp", version = "4.12.0" } moshi-converter = { module = "com.squareup.retrofit2:converter-moshi", version = "2.9.0" } -moshi-codegen = { module = "com.squareup.moshi:moshi-kotlin-codegen", version = "1.14.0" } -moshi = { module = "com.squareup.moshi:moshi", version = "1.14.0" } +moshi-codegen = { module = "com.squareup.moshi:moshi-kotlin-codegen", version = "1.15.1" } +moshi = { module = "com.squareup.moshi:moshi", version = "1.15.1" } # Android components appCompat = { module = "androidx.appcompat:appcompat", version = "1.6.1" } -viewmodel = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version = "2.4.1" } -fragment = { module = "androidx.fragment:fragment-ktx", version = "1.5.4" } -material = { module = "com.google.android.material:material", version = "1.8.0" } +viewmodel = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version = "2.7.0" } +fragment = { module = "androidx.fragment:fragment-ktx", version = "1.6.2" } +material = { module = "com.google.android.material:material", version = "1.11.0" } # Android utilities play-core = { module = "com.google.android.play:core", version = "1.10.3" } # For in-App update play-core-extensions = { module = "com.google.android.play:core-ktx", version = "1.8.1" } # DI -koin-core = { module = "io.insert-koin:koin-core", version = "3.3.3" } -koin-android = { module = "io.insert-koin:koin-android", version = "3.3.3" } +koin-bom = { module = "io.insert-koin:koin-bom", version = "3.5.3" } +koin-core = { module = "io.insert-koin:koin-core" } +koin-android = { module = "io.insert-koin:koin-android" } # Image download library -coil = { module = "io.coil-kt:coil", version = "2.2.2" } -coil-compose = { module = "io.coil-kt:coil-compose", version = "2.2.2" } +coil = { module = "io.coil-kt:coil", version = "2.5.0" } +coil-compose = { module = "io.coil-kt:coil-compose", version = "2.5.0" } # Crash reporting library -sentry = { module = "io.sentry:sentry-android", version = "6.13.1" } +sentry = { module = "io.sentry:sentry-android", version = "7.4.0" } # Analytics amplitude = { module = "com.amplitude:android-sdk", version = "3.35.1" } @@ -63,8 +65,8 @@ timber = { module = "com.jakewharton.timber:timber", version = "5.0.1" } # Testing junit = { module = "junit:junit", version = "4.13.2"} -mockk = { module = "io.mockk:mockk", version = "1.13.4"} -coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version = "1.6.4"} +mockk = { module = "io.mockk:mockk", version = "1.13.9"} +coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version = "1.8.0"} [bundles] @@ -73,6 +75,6 @@ android-application = { id = "com.android.application", version.ref = "gradleplu android-library = { id = "com.android.library", version.ref = "gradleplugin" } kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" } kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } -kotlin-kapt = { id = "org.jetbrains.kotlin.kapt", version.ref = "kotlin" } -easylauncher = { id = "com.starter.easylauncher", version = "6.1.0" } -gradle-deps-update = { id = "com.github.ben-manes.versions", version = "0.45.0" } +kotlin-ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } +easylauncher = { id = "com.starter.easylauncher", version = "6.2.0" } +gradle-deps-update = { id = "com.github.ben-manes.versions", version = "0.51.0" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index e211094..276c76a 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Tue Feb 14 16:12:35 BRT 2023 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME diff --git a/infrastructure/analytics-amplitude/build.gradle b/infrastructure/analytics-amplitude/build.gradle index 56491d2..f6977e9 100644 --- a/infrastructure/analytics-amplitude/build.gradle +++ b/infrastructure/analytics-amplitude/build.gradle @@ -24,6 +24,7 @@ android { dependencies { implementation libs.kotlin.stdlib + implementation platform(libs.koin.bom) implementation libs.koin.core implementation libs.koin.android diff --git a/infrastructure/configuration/build.gradle b/infrastructure/configuration/build.gradle index 655acc2..1d51ddf 100644 --- a/infrastructure/configuration/build.gradle +++ b/infrastructure/configuration/build.gradle @@ -1,7 +1,7 @@ plugins { alias(libs.plugins.android.library) alias(libs.plugins.kotlin.android) - alias(libs.plugins.kotlin.kapt) + alias(libs.plugins.kotlin.ksp) } android { @@ -27,6 +27,7 @@ dependencies { implementation libs.coroutines.core implementation libs.kotlin.result + implementation platform(libs.koin.bom) implementation libs.koin.core implementation project(ProjectConfig.utilityKotlin) @@ -35,5 +36,5 @@ dependencies { implementation libs.retrofit implementation libs.moshi.converter implementation libs.moshi - kapt libs.moshi.codegen + ksp libs.moshi.codegen } diff --git a/infrastructure/device/build.gradle b/infrastructure/device/build.gradle index 93455c6..90cd5c4 100644 --- a/infrastructure/device/build.gradle +++ b/infrastructure/device/build.gradle @@ -12,8 +12,8 @@ android { } compileOptions { - sourceCompatibility JavaVersion.VERSION_11 - targetCompatibility JavaVersion.VERSION_11 + sourceCompatibility javaVersion + targetCompatibility javaVersion } kotlinOptions { jvmTarget = jvmTargetVersion @@ -25,5 +25,6 @@ dependencies { implementation libs.kotlin.jdk implementation libs.coroutines.core + implementation platform(libs.koin.bom) implementation libs.koin.core } diff --git a/infrastructure/image/build.gradle b/infrastructure/image/build.gradle index 59dc248..5cdec0f 100644 --- a/infrastructure/image/build.gradle +++ b/infrastructure/image/build.gradle @@ -31,6 +31,7 @@ dependencies { implementation libs.kotlin.stdlib implementation libs.coroutines.core + implementation platform(libs.koin.bom) implementation libs.koin.core implementation project(ProjectConfig.startup) diff --git a/infrastructure/monitoring/build.gradle b/infrastructure/monitoring/build.gradle index 188ffa1..fa9f04d 100644 --- a/infrastructure/monitoring/build.gradle +++ b/infrastructure/monitoring/build.gradle @@ -24,6 +24,7 @@ android { dependencies { implementation libs.kotlin.stdlib + implementation platform(libs.koin.bom) implementation libs.koin.core implementation libs.timber diff --git a/infrastructure/navigation/build.gradle b/infrastructure/navigation/build.gradle index 77604ec..d2d5e68 100644 --- a/infrastructure/navigation/build.gradle +++ b/infrastructure/navigation/build.gradle @@ -24,6 +24,7 @@ android { dependencies { implementation libs.kotlin.stdlib + implementation platform(libs.koin.bom) implementation libs.koin.core implementation project(ProjectConfig.coreAndroid) diff --git a/infrastructure/startup/build.gradle b/infrastructure/startup/build.gradle index 2816c77..3b8aca1 100644 --- a/infrastructure/startup/build.gradle +++ b/infrastructure/startup/build.gradle @@ -7,6 +7,7 @@ dependencies { implementation libs.kotlin.stdlib implementation libs.coroutines.core + implementation platform(libs.koin.bom) implementation libs.koin.core implementation project(ProjectConfig.utilityKotlin) diff --git a/project-config/dependencies.gradle b/project-config/dependencies.gradle index df40443..bac9849 100644 --- a/project-config/dependencies.gradle +++ b/project-config/dependencies.gradle @@ -1,6 +1,6 @@ ext { - jvmTargetVersion = "11" - javaVersion = JavaVersion.VERSION_11 + jvmTargetVersion = "17" + javaVersion = JavaVersion.VERSION_17 ProjectConfig = [ utilityKotlin: ":utility:utility-kotlin", diff --git a/project-config/feature-complete-build.gradle b/project-config/feature-complete-build.gradle index 2be72fc..3d528ac 100644 --- a/project-config/feature-complete-build.gradle +++ b/project-config/feature-complete-build.gradle @@ -1,10 +1,10 @@ apply plugin: "com.android.library" apply plugin: 'kotlin-android' -apply plugin: 'kotlin-kapt' +apply plugin: 'com.google.devtools.ksp' //plugins { // alias(libs.plugins.android.library) // alias(libs.plugins.kotlin.android) -// alias(libs.plugins.kotlin.kapt) +// alias(libs.plugins.kotlin.ksp) //} android { @@ -43,13 +43,14 @@ dependencies { implementation libs.coroutines.core implementation libs.kotlin.result + implementation platform(libs.koin.bom) implementation libs.koin.core implementation libs.koin.android implementation libs.retrofit implementation libs.moshi.converter implementation libs.moshi - kapt libs.moshi.codegen + ksp libs.moshi.codegen implementation libs.appCompat implementation libs.viewmodel diff --git a/quality/jacoco.gradle b/quality/jacoco.gradle index 77456d1..14eb788 100644 --- a/quality/jacoco.gradle +++ b/quality/jacoco.gradle @@ -28,10 +28,10 @@ def setupAndroidReporting() { ] ) { reports { - csv.enabled false - xml.enabled false + csv.required = false + xml.required = false html { - enabled true + required = true destination file("${buildDir}/coverage-report") } } @@ -83,10 +83,10 @@ def setupKotlinReporting() { jacocoTestReport { dependsOn test reports { - csv.enabled false - xml.enabled false + csv.required = false + xml.required = false html { - enabled true + required = true destination file("${buildDir}/coverage-report") } } diff --git a/quality/test-coverage-report.gradle b/quality/test-coverage-report.gradle index aaf1b96..c0909ae 100644 --- a/quality/test-coverage-report.gradle +++ b/quality/test-coverage-report.gradle @@ -58,9 +58,9 @@ def setupAndroidReport() { // These are the different report file formats that we have enabled jacoco to create reports for reports { - csv.enabled false - xml.enabled = false - html.enabled true + csv.required = false + xml.required = false + html.required = true } } } @@ -88,9 +88,9 @@ def setupKotlinReport() { ]) reports { - csv.enabled false - xml.enabled false - html.enabled true + csv.required = false + xml.required = false + html.required = true } } } diff --git a/settings.gradle b/settings.gradle index e09671e..da2dc3d 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,11 +1,19 @@ pluginManagement { repositories { - mavenCentral() google() + mavenCentral() gradlePluginPortal() } } +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositories { + google() + mavenCentral() + } +} + include ':app', ':utility:utility-android', ':utility:utility-kotlin',