Android应用集成Hilt构建报错:空指针异常求助
解决Hilt集成时
hiltJavaCompilePreprod任务空指针错误 问题详情
构建Android应用时触发错误:
任务':app:hiltJavaCompilePreprod'执行失败。
java.lang.NullPointerException: Cannot invoke "dagger.spi.shaded.androidx.room.compiler.processing.XTypeElement.getAnnotation(com.squareup.javapoet.ClassName)" because the return value of "dagger.spi.shaded.androidx.room.compiler.processing.XProcessingEnv.findTypeElement(com.squareup.javapoet.TypeName)" is null
环境信息:
- JetBrains Runtime 17
- Kotlin 1.8.0
- Android Gradle Plugin 7.2.2
- Hilt 2.48
可行解决方案
1. 升级Hilt版本修复兼容性问题
Hilt 2.48存在注解处理器空指针bug,升级到2.48.1或更高版本可解决该问题,同时建议适配Kotlin版本升级Android Gradle Plugin:
- 根项目
build.gradle修改Hilt版本:
dependencies { classpath 'com.google.dagger:hilt-android-gradle-plugin:2.48.1' // 可选:将Android Gradle Plugin升级到适配Kotlin 1.8.0的7.4.2版本 classpath 'com.android.tools.build:gradle:7.4.2' } //hilt hiltCompiler: 'com.google.dagger:hilt-android:2.48.1', hiltKapt: 'com.google.dagger:hilt-android-compiler:2.48.1'
2. 禁用KAPT Worker API
部分场景下KAPT Worker API会导致注解处理器冲突,在应用模块build.gradle中添加:
kapt { useWorkerApi = false }
3. 排除Hilt与Realm的依赖冲突
Realm插件与Hilt依赖的room-compiler可能存在冲突,在kapt依赖中排除冲突模块:
kapt(dmaDependencies.hiltKapt) { exclude group: 'androidx.room', module: 'room-compiler' }
4. 清理构建缓存
执行以下命令清理缓存后重新构建:
./gradlew clean assemblePreprod
5. 统一Java编译配置
在项目根目录gradle.properties中添加配置,确保编译环境一致性:
android.jetifier.blacklist=androidx.room:room-compiler org.gradle.jvmargs=-Xmx2048m
内容的提问来源于stack exchange,提问作者gianpaolo
相关产品推荐
相关产品推荐

