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

添加Dagger Hilt依赖后遇应用实例化失败问题求助

解决Dagger Hilt配置后ClassNotFoundException及未生成Generated目录问题

问题本质

出现ClassNotFoundException: Didn't find class "com.spydar.tour.ToursApplication"且无java(generated)目录,核心原因是Dagger Hilt注解处理器未正常运行,导致Hilt所需的代理类(如Hilt_ToursApplication)未生成,同时可能伴随Dex打包异常,使原Application类未被正确加载。


修复步骤

1. 校验Hilt依赖与插件配置

确保项目级和App级Gradle配置完全匹配,版本统一是关键:

  • 项目级build.gradle(或build.gradle.kts):
    buildscript {
        dependencies {
            // 版本需与App级依赖一致
            classpath 'com.google.dagger:hilt-android-gradle-plugin:2.48'
        }
    }
    
  • App级build.gradle(或build.gradle.kts):
    // 必须应用Hilt插件
    plugins {
        id 'com.android.application'
        id 'com.google.dagger.hilt.android'
        // Kotlin项目需添加kotlin-kapt插件
        id 'kotlin-kapt'
    }
    
    android {
        // 强制使用Java 8及以上版本
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
        }
        // Kotlin项目额外配置
        kotlinOptions {
            jvmTarget = '1.8'
        }
    }
    
    dependencies {
        // Hilt核心依赖
        implementation 'com.google.dagger:hilt-android:2.48'
        // 注解处理器:Kotlin用kapt,Java用annotationProcessor
        kapt 'com.google.dagger:hilt-android-compiler:2.48'
    }
    
    // Kotlin项目需开启注解处理器错误类型修正(可选但推荐)
    kapt {
        correctErrorTypes = true
    }
    

    注意:所有Hilt相关依赖版本必须完全一致,否则会导致注解处理器失效。

2. 确认Application类与Manifest配置

  • Application类:确保正确添加@HiltAndroidApp注解,且继承自Application(或MultiDexApplication):
    import android.app.Application;
    import dagger.hilt.android.HiltAndroidApp;
    
    @HiltAndroidApp
    public class ToursApplication extends Application {
        // 无需额外初始化代码,Hilt会自动处理
    }
    
  • AndroidManifest.xml:检查Application类名是否拼写正确,无包名或类名错误:
    <application
        android:name=".ToursApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.Tour">
        <!-- 其他组件配置 -->
    </application>
    

3. 清理缓存并重建项目

缓存异常是注解处理器不运行的常见原因:

  • Android Studio操作:File > Invalidate Caches... > 勾选"Invalidate and Restart"
  • 命令行操作:
    # Windows
    gradlew clean assembleDebug
    # Mac/Linux
    ./gradlew clean assembleDebug
    

4. 启用注解处理器

检查Android Studio是否开启注解处理:

  • 打开File > Settings > Build, Execution, Deployment > Compiler > Annotation Processors
  • 勾选Enable annotation processing选项,点击Apply保存

5. 排查MultiDex问题

若项目开启了MultiDex,需确保Application类被包含在主Dex中:

  • 依赖MultiDex库:
    dependencies {
        implementation 'androidx.multidex:multidex:2.0.1'
    }
    
  • 修改Application类继承MultiDexApplication,或重写attachBaseContext:
    @HiltAndroidApp
    public class ToursApplication extends MultiDexApplication {
        // 或
        @Override
        protected void attachBaseContext(Context base) {
            super.attachBaseContext(base);
            MultiDex.install(this);
        }
    }
    
  • 在App级Gradle中启用MultiDex:
    android {
        defaultConfig {
            multiDexEnabled true
        }
    }
    

内容的提问来源于stack exchange,提问作者Aman Pratap Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 01:30:16