Не удалось создать экземпляр приложения dagger для Android

#android #gradle #dagger-hilt

Вопрос:

Я интегрирую dagger в свое приложение И сталкиваюсь с этой проблемой при запуске приложения

 java.lang.RuntimeException: Unable to instantiate application com.mine.parsexml.ParseApplication: java.lang.ClassNotFoundException: Didn't find class "com.mine.parsexml.ParseApplication" on path: DexPathList[[zip file "/data/app/com.mine.parsexml-4NxKMOI9esXH_ar6UHYk5w==/base.apk"],nativeLibraryDirectories=[/data/app/com.mine.parsexml-4NxKMOI9esXH_ar6UHYk5w==/lib/x86, /system/lib, /system/product/lib]]  at android.app.LoadedApk.makeApplication(LoadedApk.java:1226)  at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6431)  at android.app.ActivityThread.access$1300(ActivityThread.java:219)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1859)  at android.os.Handler.dispatchMessage(Handler.java:107)  at android.os.Looper.loop(Looper.java:214)  at android.app.ActivityThread.main(ActivityThread.java:7356)  at java.lang.reflect.Method.invoke(Native Method)  

Это класс приложения, который также уже объявлен в манифесте

 @HiltAndroidApp class ParseApplication: Application()  

Оценка уровня приложения

 plugins { id 'com.android.application' id 'kotlin-android' id 'androidx.navigation.safeargs.kotlin' id 'kotlin-kapt' id 'dagger.hilt.android.plugin'  

} применить плагин: «котлин-android»

 android { compileSdk 31  defaultConfig {  applicationId "com.mine.parsexml"  minSdk 23  targetSdk 31  versionCode 1  versionName "1.0"   testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" }  buildFeatures {  viewBinding true }  buildTypes {  release {  minifyEnabled false  proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'  } } kotlinOptions {  jvmTarget = '1.8' }  packagingOptions {  exclude 'META-INF/DEPENDENCIES'  exclude 'META-INF/LICENSE'  exclude 'META-INF/LICENSE.txt'  exclude 'META-INF/license.txt'  exclude 'META-INF/NOTICE'  exclude 'META-INF/NOTICE.txt'  exclude 'META-INF/notice.txt'  exclude 'META-INF/ASL2.0'  exclude 'META-INF/AL2.0'  exclude 'META-INF/LGPL2.1'  exclude 'META-INF/gradle/incremental.annotation.processors'  exclude("META-INF/*.kotlin_module") } }  dependencies {  implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.appcompat:appcompat:1.3.1' implementation 'com.google.android.material:material:1.4.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.2' implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'androidx.navigation:navigation-fragment-ktx:2.3.5' implementation 'androidx.navigation:navigation-ui-ktx:2.3.5' testImplementation 'junit:junit:4. ' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' implementation "com.google.android.exoplayer:exoplayer:2.16.0" implementation "com.google.dagger:hilt-android:2.39.1" implementation "com.google.dagger:hilt-android-compiler:2.39.1" implementation "androidx.core:core-ktx: " implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"  } repositories { mavenCentral() }  

Комментарии:

1. Я тоже получаю эту ошибку с версией 2.40.1

2. @Denny проверь мой ответ, если это тебя устроит

3. Я действительно исправил свою проблему. Я не включал модуль домена в основной модуль приложения

Ответ №1:

Моя проблема заключалась в неправильном ключевом слове для зависимости dagger, поскольку компилятору пришлось использовать kapt, а не реализацию

измененный

 implementation "com.google.dagger:hilt-android-compiler:2.39.1"  

Для

 kapt "com.google.dagger:hilt-android-compiler:2.39.1"