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

如何解决Dagger-Hilt下Application类的实例化失败问题

问题:Dagger-Hilt配置完成后应用启动崩溃,抛出ClassNotFoundException

崩溃报错信息

FATAL EXCEPTION: main
Process: com.example.roomdiexample, PID: 16588
java.lang.RuntimeException: Unable to instantiate application com.example.roomdiexample.MyApplication: java.lang.ClassNotFoundException: Didn't find class "com.example.roomdiexample.MyApplication" on path: DexPathList[[zip file "/data/app/~~oMcb6QXOSnUrrhCyYBR2Cw==/com.example.roomdiexample-ZCL6UuDMUkt4e98K2xdTZw==/base.apk"],nativeLibraryDirectories=[/data/app/~~oMcb6QXOSnUrrhCyYBR2Cw==/com.example.roomdiexample-ZCL6UuDMUkt4e98K2xdTZw==/lib/x86, /system/lib, /system_ext/lib]]
    at android.app.LoadedApk.makeApplication(LoadedApk.java:1244)

自定义Application类代码

package com.example.roomdiexample

import android.app.Application
import dagger.hilt.android.AndroidEntryPoint
import dagger.hilt.android.HiltAndroidApp

@HiltAndroidApp
class MyApplication: Application() {
}

当前Gradle配置

plugins {
    id 'com.android.application'
    id 'org.jetbrains.kotlin.android'
    id 'kotlin-kapt'
    id 'dagger.hilt.android.plugin'
}

implementation "com.google.dagger:hilt-android:2.40.5"
annotationProcessor "com.google.dagger:hilt-android-compiler:2.40.5"
implementation "androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha03"
annotationProcessor "androidx.hilt:hilt-compiler:1.0.0"
implementation 'androidx.hilt:hilt-navigation-compose:1.0.0'


buildscript {
    dependencies {
        classpath "com.google.dagger:hilt-android-gradle-plugin:2.44"
    }
}

解决方案
  • 统一Hilt版本号:当前配置中Hilt核心依赖版本(2.40.5)与Gradle插件版本(2.44)不匹配,这会导致编译生成的代理类异常,最终引发类找不到的问题。将所有Hilt相关版本统一为同一版本,示例如下:

    // 模块级build.gradle
    plugins {
        id 'com.android.application'
        id 'org.jetbrains.kotlin.android'
        id 'kotlin-kapt'
        id 'dagger.hilt.android.plugin'
    }
    
    dependencies {
        implementation "com.google.dagger:hilt-android:2.44"
        kapt "com.google.dagger:hilt-android-compiler:2.44" // Kotlin项目需用kapt替代annotationProcessor
        implementation "androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha03"
        kapt "androidx.hilt:hilt-compiler:1.0.0"
        implementation 'androidx.hilt:hilt-navigation-compose:1.0.0'
    }
    
    // 项目级build.gradle中保持插件版本一致
    buildscript {
        dependencies {
            classpath "com.google.dagger:hilt-android-gradle-plugin:2.44"
        }
    }
    
  • 清理并重建项目:版本修正后,执行Build -> Clean Project,再执行Build -> Rebuild Project,彻底清除旧编译产物,确保新代码正确生成。

  • 移除无用注解:自定义Application类中导入了AndroidEntryPoint但未使用,直接删除该导入语句,避免编译阶段的不必要处理。

  • 验证Manifest配置:确认AndroidManifest.xml中Application的name属性与类的全路径完全匹配,示例:

    <application
        android:name="com.example.roomdiexample.MyApplication"
        <!-- 其他属性 -->
        >
        <!-- 组件配置 -->
    </application>
    

    也可以使用相对路径.MyApplication,前提是Manifest的package属性与类的包名一致。

  • 启用Multidex(按需):若项目方法数超过65536,需启用Multidex。在模块级build.gradle中添加配置:

    android {
        defaultConfig {
            multiDexEnabled true
        }
    }
    
    dependencies {
        implementation 'androidx.multidex:multidex:2.0.1'
    }
    

    同时修改Application类:

    @HiltAndroidApp
    class MyApplication: MultiDexApplication() {
    }
    

    或者如果无法继承MultiDexApplication,在attachBaseContext中添加:

    override fun attachBaseContext(base: Context?) {
        super.attachBaseContext(base)
        MultiDex.install(this)
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 16:05:17