我是Kotlin的初学者,正在学习使用Hilt进行依赖注入的教程.尽管该教程是2023年发布的,但其中使用的代码行不再对我有效;我在互联网上找不到关于向哪个文件添加什么的明确说明.

我当前的Kotlin版本是232-1.9.0-release-358-AS10227.8.2321.11479570

如果有帮助的话,以下是我当前的Build.gradle(模块:app)的样子:

plugins {
    alias(libs.plugins.androidApplication)
    alias(libs.plugins.jetbrainsKotlinAndroid)
}

android {
    namespace = "com.package.myApp"
    compileSdk = 34

    defaultConfig {
        applicationId = "com.package.myApp"
        minSdk = 30
        targetSdk = 34
        versionCode = 1
        versionName = "1.0"

        testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
        vectorDrawables {
            useSupportLibrary = true
        }
    }

    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 {
        compose = true
    }
    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.1"
    }
    packaging {
        resources {
            excludes += "/META-INF/{AL2.0,LGPL2.1}"
        }
    }
}

dependencies {

    implementation(libs.androidx.core.ktx)
    implementation(libs.androidx.lifecycle.runtime.ktx)
    implementation(libs.androidx.activity.compose)
    implementation(platform(libs.androidx.compose.bom))
    implementation(libs.androidx.ui)
    implementation(libs.androidx.ui.graphics)
    implementation(libs.androidx.ui.tooling.preview)
    implementation(libs.androidx.material3)
    implementation(libs.androidx.lifecycle.viewmodel.compose)
    testImplementation(libs.junit)
    androidTestImplementation(libs.androidx.junit)
    androidTestImplementation(libs.androidx.espresso.core)
    androidTestImplementation(platform(libs.androidx.compose.bom))
    androidTestImplementation(libs.androidx.ui.test.junit4)
    debugImplementation(libs.androidx.ui.tooling)
    debugImplementation(libs.androidx.ui.test.manifest)
}

以及我的Build.gradle(Project:{app-Name})文件:

plugins {
    alias(libs.plugins.androidApplication) apply false
    alias(libs.plugins.jetbrainsKotlinAndroid) apply false
}

推荐答案

您的项目的根build.gradle插件部分需要包含以下内容:

plugins { ... id 'com.google.dagger.hilt.android' version '2.44' apply false }

那么您的应用程序的build.gradle文件需要包含以下内容:

plugins { id 'kotlin-ksp' version '1.7.20' // Use the correct version compatible with your Kotlin version

id 'com.google.dagger.hilt.android' }

接下来,在您的dependencies块中,您需要添加以下内容:

dependencies { implementation "com.google.dagger:hilt-android:2.44"

ksp "com.google.dagger:hilt-compiler:2.44" }

最后,在android {}块下添加ksp {}块:

ksp {

arg("dagger.hilt.android.internal.disableAndroidSuperclassValidation", "true")

javaSourceCompatibility = "1.8"

}

点击这里阅读更多信息:

  1. https://developer.android.com/training/dependency-injection/hilt-android
  2. https://developer.android.com/build/migrate-to-ksp

Android相关问答推荐

将HTML约束布局转换为Jetpack编写约束布局-链样式、偏差

Android深度链接配置中的URL片段匹配'

如何go 除回调流中不可用的状态?

Android事件:APP_SCOUT_HANG警告SQLite

如何将两个变量传递给Nav主机,然后将其传递给另一个屏幕?

穿戴与iPhone连接的安卓操作系统

在Jetpack Compose中,如何判断屏幕是否已重新组合?

是否可以在 Android 应用程序的 Wifi 设置中为 DNS 服务器设置自定义 IP?

当我想使用例如 material3 时,为什么我需要添加对 material 的依赖?底部导航?

如何删除房间数据库?

根据另一个数组的值对数组进行排序

Kotlin Multiplatform Mobile targetSdk 已弃用

如何让这个三角形指示器在 android jetpack compose 中旋转和移动?

Jetpack Compose UI - 在 AlertDialog 中单击时按钮宽度会发生变化

如何解决 compose 中material 图标的由于接收器类型不匹配,以下候选者都不适用

如何放置在柱子的角落(底端)

Android Compose:LazyColumn 和 Column with verticalScroll 的区别

这是 let 函数的正确用法吗?

Kotlin Compose forEach 中的负间距

AndroidX Room 生成类错误:类是公共的,应在名为 class.java 的文件中声明