AOSP13下用Android.bp编译含Hilt的车载系统应用编译报错求助
解决AOSP中Android.bp配置Hilt注解处理的问题
核心原因
Hilt的@HiltAndroidApp、@AndroidEntryPoint这类注解需要注解处理器生成辅助代码才能生效,Gradle插件只是帮你自动封装了注解处理器的依赖配置和参数传递逻辑。你用Android.bp构建时,必须手动完成这些配置,而不是只加hilt_android依赖。
具体解决步骤
1. 添加Hilt注解处理器依赖
在你的Android.bp的deps中补充Hilt注解处理器模块,AOSP中对应的模块为hilt_compiler:
android_app { name: "YourCarApplication", // 其他原有配置如srcs、resource_dirs等 deps: [ "hilt_android", "hilt_compiler", // 新增注解处理器依赖 // 你原有的Compose、车载相关依赖 ], }
2. 配置注解处理器参数
AOSP环境下需要关闭Hilt的父类校验,同时要让处理器正确识别你的Application类。在Android.bp中通过javacflags和java_plugins传递参数:
android_app { name: "YourCarApplication", // 其他原有配置 javacflags: [ "-Adagger.hilt.android.internal.disableAndroidSuperclassValidation=true", ], java_plugins: [ { name: "hilt_compiler", args: [ "dagger.hilt.android.internal.disableAndroidSuperclassValidation=true", ], }, ], }
3. 检查注解标注正确性
确认你的Application类标注无误,没有多余的语法错误:
@HiltAndroidApp public class YourCarApp extends Application { // 业务代码 }
对于标注@AndroidEntryPoint的Activity/Fragment,无需手动修改父类,注解处理器会自动生成对应的代理父类。
4. 验证编译结果
执行编译命令后,检查out/target/common/obj/APPS/YourCarApplication_intermediates/classes目录下是否生成了Hilt_YourCarApp这类辅助类,如果存在则说明注解处理器已正常工作。
内容的提问来源于stack exchange,提问作者Alessandro Demofonti demoa
相关产品推荐
相关产品推荐

