skip to Main Content

I have migratin my build to use version catalogs.
I have remove the following from my build.gradle

plugins {
id 'kotlin-android'
id 'kotlin-kapt'
}

and

kapt "androidx.room:room-compiler:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"

kapt "com.google.dagger:hilt-compiler:$hilt_version"

now I am getting

warning: The following options were not recognized by any processor: 
'[dagger.hilt.internal.useAggregatingRootProcessor, room.schemaLocation, 
dagger.fastInit, dagger.hilt.android.internal.disableAndroidSuperclassValidation, 
dagger.hilt.android.internal.projectType]'

1 warning

and

A failure occurred while executing 
com.android.build.gradle.internal.tasks.MergeJavaResWorkAction
 > 2 files found with path 'META-INF/gradle/incremental.annotation.processors' from 
 inputs:
  - /.gradle/caches/transforms- 
 3/5f588ae3973231906376832b3350f55d/transformed/jetified-hilt-android-compiler- 
 2.45.jar
   - /.gradle/caches/transforms- 
 3/f1c91d9e7fbd546100043f736678c477/transformed/jetified-dagger-compiler-2.45.jar

Now I am wondering how to add kotlin-kapt as plugin the version catalogs.
Or how do I use the annotationProcessor with version catalogs?

2

Answers


  1. First, change the plugins in build.gradle(:app) like:

    plugins {
        id 'com.android.application'
        id 'org.jetbrains.kotlin.android'
        id 'kotlin-kapt'
        id 'dagger.hilt.android.plugin'
    }
    

    Then implement the libraries in libs.version.toml file like shown below:

    [versions]
    daggerHilt = "2.45"
    room = "2.5.1"
    
    [libraries]
    #Room
    androidx-room-runtime = { group = "androidx.room", name = "room-runtime", version.ref = "room" }
    androidx-room-compiler = { group = "androidx.room", name = "room-compiler", version.ref = "room" }
    androidx-room-ktx = { group = "androidx.room", name = "room-ktx", version.ref = "room" }
    
    #Dagger - Hilt
    hilt-android = { group = "com.google.dagger", name = "hilt-android", version.ref = "daggerHilt" }
    hilt-android-compiler = { group = "com.google.dagger", name = "hilt-android-compiler", version.ref = "daggerHilt" }
    hilt-compiler = { group = "androidx.hilt", name = "hilt-compiler", version.ref = "hiltNavigation" }
    hilt-navigation-compose = { group = "androidx.hilt", name = "hilt-navigation-compose", version.ref = "hiltNavigation" }
    
    [plugins]
    hilt = { id = "com.google.dagger.hilt.android", version.ref = "daggerHilt"}
    

    Last, import the libraries in build.module(:app), you can use kapt or annotationProcessor:

    // Dagger - Hilt
    implementation(libs.hilt.android)
    kapt(libs.hilt.android.compiler)
    kapt(libs.hilt.compiler)
    implementation(libs.hilt.navigation.compose)
    
    // Room
    implementation(libs.androidx.room.runtime)
    annotationProcessor(libs.androidx.room.compiler)
    kapt(libs.androidx.room.compiler)
    implementation(libs.androidx.room.ktx)
    

    And do not forget to add this in build.gradle(project), if you didn’t already:

    plugins {
        id 'com.android.application' version '7.4.2' apply false
        id 'com.android.library' version '7.4.2' apply false
        id 'org.jetbrains.kotlin.android' version '1.8.20' apply false
        id 'com.google.dagger.hilt.android' version '2.45' apply false
    }
    
    Login or Signup to reply.
  2. libs.version.toml

    [versions]
    com-android-application = "8.1.0-alpha11"
    org-jetbrains-kotlin-android = "1.8.0"
    navigation-fragment-ktx = "2.5.3"
    navigation-ui-ktx = "2.5.3"
    
    [libraries]
    navigation-fragment-ktx = { group = "androidx.navigation", name = "navigation-fragment-ktx", version.ref = "navigation-fragment-ktx" }
    navigation-ui-ktx = { group = "androidx.navigation", name = "navigation-ui-ktx", version.ref = "navigation-ui-ktx" }
    
    [plugins]
    com-android-application = { id = "com.android.application", version.ref = "com-android-application" }
    org-jetbrains-kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "org-jetbrains-kotlin-android" }
    org-jetbrains-kotlin-kapt = { id = "org.jetbrains.kotlin.kapt", version.ref = "org-jetbrains-kotlin-android" }
    

    build.gradle(:project)

    // Top-level build file where you can add configuration options common to all sub-projects/modules.
    plugins {
        alias(libs.plugins.com.android.application) apply false
        alias(libs.plugins.org.jetbrains.kotlin.android) apply false
        alias(libs.plugins.org.jetbrains.kotlin.kapt) apply false
    }
    

    build.gradle(:app)

    plugins {
        alias(libs.plugins.com.android.application)
        alias(libs.plugins.org.jetbrains.kotlin.android)
        alias(libs.plugins.org.jetbrains.kotlin.kapt)
    }
    
    android {
        namespace = "com.example.jetpack"
        compileSdk = 33
    
        defaultConfig {
            applicationId = "com.example.jetpack"
            minSdk = 24
            targetSdk = 33
            versionCode = 1
            versionName = "1.0"
    
            testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
        }
    
        buildTypes {
            release {
                isMinifyEnabled = false
                proguardFiles(
                    getDefaultProguardFile("proguard-android-optimize.txt"),
                    "proguard-rules.pro"
                )
            }
        }
        compileOptions {
            sourceCompatibility = JavaVersion.VERSION_1_8
            targetCompatibility = JavaVersion.VERSION_1_8
        }
        kotlinOptions {
            jvmTarget = "1.8"
        }
        buildFeatures {
            viewBinding = true
            dataBinding =true
        }
    }
    
    dependencies {
        ....
        implementation(libs.navigation.fragment.ktx)
        implementation(libs.navigation.ui.ktx)
       ...
    }
    

    For more detail visit this website:

    https://www.droidcon.com/2022/05/13/gradle-version-catalogs-for-an-awesome-dependency-management/

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search