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

多模块Kotlin项目集成Hilt启动报错:ClassNotFoundException

override fun onCreate() {
    super.onCreate()

}

}

## MainActivity类
```kotlin
@AndroidEntryPoint
class MainActivity : FragmentActivity(), IActionListeners, IImageListeners,
    OnListFragmentInteractionListener {
    @Inject lateinit var app: AppSettings

    ...
    whatever
}

报错日志

2022-07-17 15:51:27.268 8574-8574/com.myapp.myapp E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.myapp.myapp, PID: 8574
    java.lang.RuntimeException: Unable to instantiate application app.AppSettings: java.lang.ClassNotFoundException: Didn't find class "app.AppSettings" on path: DexPathList[[zip file "/data/app/~~umETXnca3-spQEy4jvBm2Q==/com.myapp.myapp-QfTlJr20Dw0ZWFvJSqfnvg==/base.apk"],nativeLibraryDirectories=[/data/app/~~umETXnca3-spQEy4jvBm2Q==/com.myapp.myapp-QfTlJr20Dw0ZWFvJSqfnvg==/lib/arm64, /data/app/~~umETXnca3-spQEy4jvBm2Q==/com.myapp.myapp-QfTlJr20Dw0ZWFvJSqfnvg==/base.apk!/lib/arm64-v8a, /system/lib64, /system_ext/lib64]]
        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 "app.AppSettings" on path: DexPathList[[zip file "/data/app/~~umETXnca3-spQEy4jvBm2Q==/com.myapp.myapp-QfTlJr20Dw0ZWFvJSqfnvg==/base.apk"],nativeLibraryDirectories=[/data/app/~~umETXnca3-spQEy4jvBm2Q==/com.myapp.myapp-QfTlJr20Dw0ZWFvJSqfnvg==/lib/arm64, /data/app/~~umETXnca3-spQEy4jvBm2Q==/com.myapp.myapp-QfTlJr20Dw0ZWFvJSqfnvg==/base.apk!/lib/arm64-v8a, /system/lib64, /system_ext/lib64]]
        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: Lapp/Hilt_AppSettings;
        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 "app.Hilt_AppSettings" on path: DexPathList[[zip file "/data/app/~~umETXnca3-spQEy4jvBm2Q==/com.myapp.myapp-QfTlJr20Dw0ZWFvJSqfnvg==/base.apk"],nativeLibraryDirectories=[/data/app/~~umETXnca3-spQEy4jvBm2Q==/com.myapp.myapp-QfTlJr20Dw0ZWFvJSqfnvg==/lib/arm64, /data/app/~~umETXnca3-spQEy4jvBm2Q==/com.myapp.myapp-QfTlJr20Dw0ZWFvJSqfnvg==/base.apk!/lib/arm64-v8a, /system/lib64, /system_ext/lib64]]
        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"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

    <supports-screens
        android:smallScreens="true"
        android:normalScreens="true"
        android:largeScreens="true"
        android:xlargeScreens="true"
        android:anyDensity="true"
        android:resizeable="true"/>

    <application
        android:name="app.AppSettings"
        android:enabled="true"
        android:allowBackup="true"
        android:fullBackupContent="true"
        android:hardwareAccelerated="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:largeHeap="true"
        tools:replace="android:theme"
        android:theme="@style/Theme.myTheme.TitleBar">
        <uses-library
            android:name="org.apache.http.legacy"
            android:required="false" />

        ...activities...

        <receiver android:name=".helpers.notification.receiver.AlarmReceiver"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.NOTIFY" />
            </intent-filter>
        </receiver>
        <receiver android:name=".helpers.notification.receiver.BootReceiver"
            android:permission="android.permission.RECEIVE_BOOT_COMPLETED"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
            </intent-filter>
        </receiver>
        <service
            android:name=".helpers.notification.service.AlarmService"
            android:enabled="true"/>
        <service
            android:name=".helpers.audio.PlayMp3Service"
            android:enabled="true"/>
        <provider
            android:name=".helpers.GenericFileProvider"
            android:authorities="${applicationId}.helpers.GenericFileProvider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/provider_paths"/>
        </provider>

    </application>

</manifest>

解决方案

1. 统一Hilt版本

根build.gradle中的Hilt插件版本(2.38.1)与app模块的Hilt依赖版本(2.42)不一致,会导致编译生成的代码不兼容。统一版本步骤:

  • 在根build.gradle的ext中添加Hilt版本变量:
buildscript {
    ext {
        kotlin_version = '1.7.10'
        hilt_version = '2.42'
        java_version = JavaVersion.VERSION_1_8
    }
    repositories {
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:7.2.1'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath("com.google.dagger:hilt-android-gradle-plugin:$hilt_version")
    }
}
  • 在app模块的dependencies中使用该变量:
dependencies {
    implementation("com.google.dagger:hilt-android:$hilt_version")
    annotationProcessor("com.google.dagger:hilt-android-compiler:$hilt_version")
    // 其他依赖保持不变
}

2. 为Common模块配置Hilt支持

Common作为library模块,需要正确配置Hilt插件和依赖才能生成

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 03:57:13