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

Jetpack Compose应用无自定义Application类时如何正确使用Hilt

结论先说

没有任何方式可以跳过带@HiltAndroidApp注解的Application类配置,哪怕你用Jetpack Compose也不行,只给MainActivity加@AndroidEntryPoint直接运行必然启动崩溃,不存在所谓的内部适配逻辑帮你省掉这步,我刚搭Compose+Hilt项目的时候试过偷懒省这步,直接在启动阶段抛Hilt初始化异常。

具体操作步骤

整个配置过程非常简单,哪怕你之前从来没自定义过Application类,全程只需要写3行代码,改一行清单配置,两分钟就能搞定:

  • 新建一个Kotlin类,类名随便取,比如MyApp,直接继承系统的Application类即可,不需要写任何额外业务逻辑,只需要给类加上@HiltAndroidApp注解:
@HiltAndroidApp
class MyApp : Application()
  • 打开项目的AndroidManifest.xml文件,找到根节点下的<application>标签,添加android:name属性,值指向你刚创建的类即可,标签里原有的icon、label、theme等配置,以及内部声明的Activity等组件全部不需要改动:
<application
    android:name=".MyApp"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/Theme.YourApp">
    <!-- 原有组件声明保持不变 -->
</application>
  • 最后给你的MainActivity加上@AndroidEntryPoint注解,就可以正常在Activity以及内部的Composable里使用Hilt注入的依赖了,不需要给MainActivity加其他任何注解。

常见误区

很多人觉得自己没写过自定义Application就能省这步,本质是混淆了系统默认Application和Hilt要求的入口类的区别:Android系统确实会给未配置自定义Application类的应用创建一个框架内置的Application实例,但Hilt的全局依赖容器初始化逻辑,必须依托@HiltAndroidApp标记的类生成对应的代码入口,这个是Hilt的硬性初始化要求,和你用Compose还是传统View体系没有关系。
你创建的这个Application类不需要写任何额外逻辑,写完之后基本不需要再维护,完全不存在配置复杂的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 21:12:17