You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Jetpack Compose中使用Hilt遇报错:Expected @AndroidEntryPoint to have a value

Hilt构建错误解决:Expected @AndroidEntryPoint to have a value

错误信息

[Hilt] Expected @AndroidEntryPoint to have a value. Did you forget to apply the Gradle Plugin? (com.google.dagger.hilt.android)
[Hilt] Processing did not complete. See error above for details.

当前配置

插件配置(根build.gradle.kts)

alias(libs.plugins.android.application)
    alias(libs.plugins.jetbrains.kotlin.android)
    kotlin("kapt")
    id("com.google.dagger.hilt.android") version "2.51.1" apply false
}

依赖配置(模块级build.gradle.kts)

kapt(libs.hilt.compiler)
implementation(libs.androidx.hilt.lifecycle.viewmodel)
kapt(libs.androidx.hilt.compiler.v110)
implementation(libs.androidx.hilt.navigation.compose.v110)

MainActivity代码

class MainActivity : ComponentActivity() {
    private val viewModel: WeatherViewModel by viewModels()
    private lateinit var permissionLauncher: ActivityResultLauncher<Array<String>>
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        permissionLauncher = registerForActivityResult(
            ActivityResultContracts.RequestMultiplePermissions()
        ) {
            viewModel.loadWeatherInfo()
        }
        permissionLauncher.launch(
            arrayOf(
                Manifest.permission.ACCESS_COARSE_LOCATION,
                Manifest.permission.ACCESS_FINE_LOCATION
            )
        )

        setContent {
            ComposeWeatherAppTestTheme {
            }
        }
    }
}

解决方案

  • 正确应用Hilt Gradle插件
    根build.gradle.kts中保持插件apply false(仅声明不应用),在模块级(app)build.gradle.kts中添加插件应用:

    alias(libs.plugins.android.application)
        alias(libs.plugins.jetbrains.kotlin.android)
        kotlin("kapt")
        id("com.google.dagger.hilt.android") // 去掉apply false,直接应用
    }
    
  • 对齐Hilt依赖版本
    确保libs.hilt.compiler的版本与libs.hilt.android.v2511完全一致(均为2.51.1),版本不匹配会导致注解处理异常。

  • 添加@HiltAndroidApp注解到Application类
    创建自定义Application类并标注Hilt入口注解,这是Hilt初始化的必要步骤:

    class MyApplication : Application() {}
    

    同时在AndroidManifest.xml中指定该Application:

    <application
        android:name=".MyApplication"
        <!-- 其他原有配置 -->
    >
    </application>
    

内容的提问来源于stack exchange,提问作者Mohsen Mashkour

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 01:10:08