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

标签 android gradle dagger-hilt gradle-kotlin-dsl kapt

我正在使用最新的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
}

这是项目的应用程序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
}

这是构建项目时发生的错误

> 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.
> ```

最佳答案

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

写下:

annotationProcessor("com.google.dagger:hilt-android-compiler:2.44")

而不是

kapt("com.google.dagger:hilt-android-compiler:2.44")

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

关于android - 我正在使用最新的 kts 构建工具来学习 Android hilt,但是 kapt 似乎有一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76270842/

相关文章:

android - Github 对 pull 请求发表评论的 TeamCity 触发器

groovy - 仅当结果不为空时才收集

Android Dagger Hilt : Do we need scope annotations for ViewModels?

android - Hilt - 如何将依赖项注入(inject)适配器?

java - GSON解析前如何给对象添加自定义字段

android - 找不到适用于我的 Android 手机的 ADB 驱动程序

android - Application.ActivityLifecycleCallbacks 是否在 Activity 中的生命周期方法之前被同步调用?

android - flutter-firebase_auth- gradlew.bat异常退出

android - 解决后无法更改配置 ':app:debugCompile' 的属性

android - Hilt ViewModel 没有零参数构造函数