Android Dagger-Hilt构建报错:@AndroidEntryPoint需配置Gradle插件
解决Dagger-Hilt构建错误:Expected @AndroidEntryPoint to have a value
问题现象
构建应用时触发如下错误:
.../trackandtrace/feature_location/LocationService.java:7: error: [Hilt] Expected @AndroidEntryPoint to have a value. Did you forget to apply the Gradle Plugin? (com.google.dagger.hilt.android) public final class LocationService extends android.app.Service { ^ See https://dagger.dev/hilt/gradle-setup.html [Hilt] Processing did not complete. See error above for details.
当前配置与代码
模块级build.gradle.kts配置
plugins { id("com.android.application") id("org.jetbrains.kotlin.android") id("kotlin-kapt") id("com.google.dagger.hilt.android") version "2.44" apply false } android { namespace = "com.example.trackandtrace" compileSdk = 34 defaultConfig { applicationId = "com.example.trackandtrace" minSdk = 24 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_17 targetCompatibility = JavaVersion.VERSION_17 } kotlinOptions { jvmTarget = "17" } buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.4.3" //1.4.3 } packaging { resources { excludes += "/META-INF/{AL2.0,LGPL2.1}" } } } dependencies { implementation("androidx.core:core-ktx:1.9.0") implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.1") implementation("androidx.activity:activity-compose:1.7.2") implementation(platform("androidx.compose:compose-bom:2023.03.00")) implementation("androidx.compose.ui:ui") implementation("androidx.compose.ui:ui-graphics") implementation("androidx.compose.ui:ui-tooling-preview") implementation("androidx.compose.material3:material3") implementation(platform("androidx.compose:compose-bom:2023.03.00")) testImplementation("junit:junit:4.13.2") androidTestImplementation("androidx.test.ext:junit:1.1.5") androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") androidTestImplementation(platform("androidx.compose:compose-bom:2023.03.00")) androidTestImplementation("androidx.compose.ui:ui-test-junit4") androidTestImplementation(platform("androidx.compose:compose-bom:2023.03.00")) debugImplementation("androidx.compose.ui:ui-tooling") debugImplementation("androidx.compose.ui:ui-test-manifest") // GPS services implementation("com.google.android.gms:play-services-location:21.0.1") // Compose dependencies implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.6.1") implementation("androidx.navigation:navigation-compose:2.7.1") implementation("androidx.compose.material:material-icons-extended") implementation("androidx.hilt:hilt-navigation-compose:1.1.0-alpha01") // Coroutines implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4") implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4") //Dagger - Hilt implementation("com.google.dagger:hilt-android:2.48") kapt("com.google.dagger:hilt-android-compiler:2.48") implementation("androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha03") kapt("androidx.hilt:hilt-compiler:1.0.0") // Room implementation("androidx.room:room-runtime:2.5.2") kapt("androidx.room:room-compiler:2.5.2") // Kotlin Extensions and Coroutines support for Room implementation("androidx.room:room-ktx:2.5.2") }
LocationService.kt代码
import android.app.Service import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.SupervisorJob @AndroidEntryPoint class LocationService: Service() { private val serviceScope = CoroutineScope(SupervisorJob() + Dispatchers.IO) @Inject lateinit var locationClient: LocationClient @Inject lateinit var positionUseCases: PositionUseCases ... }
解决方案
1. 统一Hilt版本并正确应用Gradle插件
你的配置存在插件版本与依赖版本不一致的问题:插件用2.44,依赖却用2.48,且apply false导致插件未生效。修改模块级build.gradle.kts的plugins块:
plugins { id("com.android.application") id("org.jetbrains.kotlin.android") id("kotlin-kapt") // 统一版本为2.48,移除apply false id("com.google.dagger.hilt.android") version "2.48" }
2. 添加@HiltAndroidApp注解的Application类
Hilt要求必须有一个标注@HiltAndroidApp的Application类作为依赖注入入口:
import android.app.Application import dagger.hilt.android.HiltAndroidApp @HiltAndroidApp class TrackAndTraceApp : Application()
同时在AndroidManifest.xml中指定该Application:
<application android:name=".TrackAndTraceApp" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" ...> <!-- 其他组件配置 --> </application>
3. 清理并重新构建项目
- 点击Android Studio顶部工具栏的Sync Project with Gradle Files同步配置
- 执行Build > Clean Project清理旧缓存
- 执行Build > Rebuild Project重新构建应用
内容的提问来源于stack exchange,提问作者Nick Hoogendijk
相关产品推荐
相关产品推荐

