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

Android应用启动崩溃:Hilt生成类及Application类找不到求助

启动Android应用时遭遇ClassNotFoundException(Hilt相关)

启动应用时直接崩溃,错误提示找不到com.example.indoorplantcare.IndoorPlantCare类,以及Hilt生成的Hilt_IndoorPlantCare类。已尝试清理项目、重新构建、更新Hilt依赖版本、移除Manifest中的package行,但问题未解决。

错误堆栈信息

java.lang.RuntimeException: Unable to instantiate application com.example.indoorplantcare.IndoorPlantCare: java.lang.ClassNotFoundException: Didn't find class "com.example.indoorplantcare.IndoorPlantCare" on path: DexPathList[[dex file "/data/data/com.example.indoorplantcare/code_cache/.overlay/base.apk/classes5.dex", zip file "/data/app/~~Wk8dSCqJi7pIvbEfnXAmlg==/com.example.indoorplantcare-AlAYeTTWq1xDer_yFmZ9pg==/base.apk"],nativeLibraryDirectories=[/data/app/~~Wk8dSCqJi7pIvbEfnXAmlg==/com.example.indoorplantcare-AlAYeTTWq1xDer_yFmZ9pg==/lib/x86, /system/lib, /system_ext/lib]]
        at android.app.LoadedApk.makeApplication(LoadedApk.java:1244)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6683)
        at android.app.ActivityThread.access$1300(ActivityThread.java:237)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1913)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7656)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal .os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal .os.ZygoteInit.main(ZygoteInit.java:947)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.indoorplantcare.IndoorPlantCare" on path: DexPathList[[dex file "/data/data/com.example.indoorplantcare/code_cache/.overlay/base.apk/classes5.dex", zip file "/data/app/~~Wk8dSCqJi7pIvbEfnXAmlg==/com.example.indoorplantcare-AlAYeTTWq1xDer_yFmZ9pg==/base.apk"],nativeLibraryDirectories=[/data/app/~~Wk8dSCqJi7pIvbEfnXAmlg==/com.example.indoorplantcare-AlAYeTTWq1xDer_yFmZ9pg==/lib/x86, /system/lib, /system_ext/lib]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:207)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        at android.app.AppComponentFactory.instantiateApplication(AppComponentFactory.java:76)
        at androidx.core.app.CoreComponentFactory.instantiateApplication(CoreComponentFactory.java:52)
        at android.app.Instrumentation.newApplication(Instrumentation.java:1158)
        at android.app.LoadedApk.makeApplication(LoadedApk.java:1236)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6683)
        at android.app.ActivityThread.access$1300(ActivityThread.java:237)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1913)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7656)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal .os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal .os.ZygoteInit.main(ZygoteInit.java:947)
Suppressed: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/example/indoorplantcare/Hilt_IndoorPlantCare;
        at java.lang.VMClassLoader.findLoadedClass(Native Method)
        at java.lang.ClassLoader.findLoadedClass(ClassLoader.java:738)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:363)
... 14 more
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.indoorplantcare.Hilt_IndoorPlantCare" on path: DexPathList[[dex file "/data/data/com.example.indoorplantcare/code_cache/.overlay/base.apk/classes5.dex", zip file "/data/app/~~Wk8dSCqJi7pIvbEfnXAmlg==/com.example.indoorplantcare-AlAYeTTWq1xDer_yFmZ9pg==/base.apk"],nativeLibraryDirectories=[/data/app/~~Wk8dSCqJi7pIvbEfnXAmlg==/com.example.indoorplantcare-AlAYeTTWq1xDer_yFmZ9pg==/lib/x86, /system/lib, /system_ext/lib]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:207)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
... 17 more

AndroidManifest.xml内容

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    >

    <uses-permission android:name="android.permission.INTERNET"/>

    <application
        android:name=".IndoorPlantCare"
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.IndoorPlantCare"
        tools:targetApi="31"
        tools:ignore="MissingClass">
        <activity
            android:name=".MainActivity"
            android:exported="true"
            android:label="@string/app_name"
            android:theme="@style/Theme.IndoorPlantCare">

        <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

        </activity>

    </application>


</manifest>

模块build.gradle配置

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

android {
    compileSdk 34
    namespace= "com.example.indoorplantcare"

    defaultConfig {
        applicationId "com.example.indoorplantcare"
        minSdk 28
        targetSdk 32
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        vectorDrawables {
            useSupportLibrary true
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_17
        targetCompatibility JavaVersion.VERSION_17
    }
    kotlinOptions {
        jvmTarget = JavaVersion.VERSION_17
    }
    buildFeatures {
        compose true
    }
    composeOptions {
        kotlinCompilerExtensionVersion compose_version
    }
    packagingOptions {
        resources {
            excludes += '/META-INF/{AL2.0,LGPL2.1}'
        }
    }
}

dependencies {
    implementation "androidx.compose.compiler:compiler:1.0.0-beta08"
    implementation 'androidx.core:core-ktx:1.7.0'
    implementation "androidx.compose.ui:ui:$compose_version"
    implementation "androidx.compose.material:material:1.5.4"
    implementation "androidx.compose.material3:material3:1.1.2"
    implementation "androidx.compose.material3:material3-window-size-class:1.1.2"
    implementation "androidx.compose.ui:ui-tooling-preview:$compose_version"
    implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1'
    implementation 'androidx.activity:activity-compose:1.3.1'
    implementation "androidx.compose.foundation:foundation:1.3.1"
    implementation 'androidx.compose.foundation:foundation-android:1.5.4'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
    androidTestImplementation "androidx.compose.ui:ui-test-junit4:$compose_version"
    debugImplementation "androidx.compose.ui:ui-tooling:$compose_version"
    debugImplementation "androidx.compose.ui:ui-test-manifest:$compose_version"


    //Firebase
    implementation 'com.google.firebase:firebase-firestore-ktx'
    implementation platform("com.google.firebase:firebase-bom:$firebase_bom_version")
    implementation "com.google.firebase:firebase-auth-ktx"
    implementation 'com.google.firebase:firebase-analytics-ktx:21.1.0'
    implementation 'com.google.firebase:firebase-messaging-ktx:23.0.6'

    //Preference DataStore
    implementation 'androidx.datastore:datastore-preferences:1.0.0'

    //Navigation Compose
    implementation "androidx.navigation:navigation-compose:2.4.0-beta02"

    //Hilt
    implementation "com.google.dagger:hilt-android:$hilt_version"
    annotationProcessor "com.google.dagger:hilt-android-compiler:$hilt_version"
    implementation "androidx.hilt:hilt-navigation-compose:$hilt_navigation_compose_version"
    // Coil
    implementation("io.coil-kt:coil-compose:2.1.0")
}

版本配置(项目级build.gradle)

ext {
        gradle_version = '8.1.2'
        kotlin_version = '1.9.10'
        hilt_version = '2.48.1'
        hilt_navigation_compose_version = '1.0.0'
       
    }

Application类代码

@HiltAndroidApp
class IndoorPlantCare: Application()

修复方案

1. 替换Hilt注解处理器为kapt

你的项目用Kotlin开发,必须使用kapt来处理Hilt的注解处理器,而不是annotationProcessor(后者仅支持Java代码)。修改模块build.gradle中的Hilt依赖:

// 替换前
annotationProcessor "com.google.dagger:hilt-android-compiler:$hilt_version"

// 替换后
kapt "com.google.dagger:hilt-android-compiler:$hilt_version"

这是核心问题:如果用annotationProcessor,Kotlin类上的@HiltAndroidApp注解不会被处理,导致Hilt无法生成Hilt_IndoorPlantCare代理类,最终引发ClassNotFoundException。

2. 确认Hilt插件版本与依赖一致

检查项目级build.gradle中的Hilt插件版本,确保和hilt_version一致:

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

3. 彻底清理并重新构建

  • 执行Build > Clean Project
  • 执行Build > Rebuild Project
  • 手动删除项目根目录下的.idea和.build文件夹,重启Android Studio

4. 移除Manifest中的tools:ignore="MissingClass"

该属性会掩盖编译时的类缺失提示,先移除它,查看编译过程中是否有明确的错误信息。

5. 验证命名空间与类包名一致性

确保IndoorPlantCare类确实在com.example.indoorplantcare包下,和gradle中namespace配置的一致。

6. 确认Multidex配置(可选)

虽然minSdk 28及以上默认开启Multidex,但可以显式添加配置确保正常:
在模块build.gradle的defaultConfig中添加:

multiDexEnabled true

同时添加依赖:

implementation 'androidx.multidex:multidex:2.0.1'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 05:42:33