我正在使用最新的 kts 构建工具来学习 Android hilt,但是 kapt 似乎有一些问题

187*_*506 3 android gradle kapt gradle-kotlin-dsl dagger-hilt

我正在使用最新的kts构建工具来学习Android hilt,并且我已经按照官方教程引入了依赖项,但是kapt似乎存在一些问题:

这是项目的根级别build.gradle.kts

plugins {
    id("com.android.application") version "8.2.0-alpha04" apply false
    id("com.android.library") version "8.0.0" apply false
    id("org.jetbrains.kotlin.android") version "1.8.20" apply false
    id("com.google.dagger.hilt.android") version "2.44" apply false
}
Run Code Online (Sandbox Code Playgroud)

这是项目的app build.gradle.kts

import org.jetbrains.kotlin.kapt3.base.Kapt.kapt

plugins {
    id("com.android.application")
    kotlin("kapt")
    id("com.google.dagger.hilt.android")
}

android {
    namespace = "com.example.myapplication"
    compileSdk = 33

    defaultConfig {
        applicationId = "com.example.myapplication"
        minSdk = 29
        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
    }
    viewBinding {
        enable = true
    }
}

dependencies {

    implementation("androidx.constraintlayout:constraintlayout:2.1.4")
    compileOnly("org.projectlombok:lombok:1.18.26")
    annotationProcessor("org.projectlombok:lombok:1.18.26")
    implementation("androidx.appcompat:appcompat:1.6.1")
    implementation("com.google.android.material:material:1.8.0")
    testImplementation("junit:junit:4.13.2")
    androidTestImplementation("androidx.test.ext:junit:1.1.5")
    androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
    implementation("com.google.dagger:hilt-android:2.44")
    kapt("com.google.dagger:hilt-android-compiler:2.44")
}
// Allow references to generated code
kapt {
    correctErrorTypes = true
}
Run Code Online (Sandbox Code Playgroud)

这是构建项目时的错误

> Configure project :app
e: C:\Users\123\AndroidStudioProjects\MyApplication\app\build.gradle.kts:52:10: Type mismatch: inferred type is String but Action<KaptExtension> was expected

FAILURE: Build failed with an exception.

* Where:
Build file 'C:\Users\123\AndroidStudioProjects\MyApplication\app\build.gradle.kts' line: 52

* What went wrong:
Script compilation error:

  Line 52:     kapt("com.google.dagger:hilt-android-compiler:2.44")
                    ^ Type mismatch: inferred type is String but Action<KaptExtension> was expected

1 error

* Try:

> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> ```

Run Code Online (Sandbox Code Playgroud)

187*_*506 8

我已经解决了这个问题,因为我的项目是Java代码,所以不需要引入kapt。

写下这个:

annotationProcessor("com.google.dagger:hilt-android-compiler:2.44")
Run Code Online (Sandbox Code Playgroud)

代替

kapt("com.google.dagger:hilt-android-compiler:2.44")
Run Code Online (Sandbox Code Playgroud)

您现在可以使用依赖注入。