Nach der Migration der Hilt-Version von 2.33-beta
zu 2.35
Mein Projekt wurde mit dem unten angegebenen Fehler nicht mehr erstellt:
Eine txt-Version:
error: cannot access DefaultActivityViewModelFactory
class file for dagger.hilt.android.internal.lifecycle.DefaultActivityViewModelFactory not found
Consult the following stack trace for details.
com.sun.tools.javac.code.Symbol$CompletionFailure: class file for dagger.hilt.android.internal.lifecycle.DefaultActivityViewModelFactory not found
Ein Ausschnitt aus meinem build.gradle (Projekt):
buildscript {
ext.hilt_version = '2.33-beta'
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:4.1.3'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.32"
...
classpath "com.google.dagger:hilt-android-gradle-plugin:$hilt_version"
}
}
allprojects {
repositories {
google()
jcenter()
maven { url 'https://jitpack.io' }
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
Ein Ausschnitt meiner build.gradle (App):
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-parcelize'
apply plugin: 'kotlin-kapt'
apply plugin: 'dagger.hilt.android.plugin'
android {
compileSdkVersion 29
...
defaultConfig {
javaCompileOptions {
annotationProcessorOptions {
arguments += [
"room.schemaLocation": "$projectDir/schemas".toString(),
"room.incremental" : "true"
]
}
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
testOptions {
execution 'ANDROIDX_TEST_ORCHESTRATOR'
}
buildFeatures {
viewBinding true
dataBinding true
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
...
//DI
implementation "com.google.dagger:hilt-android:$hilt_version"
implementation "androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha03"
implementation 'androidx.hilt:hilt-work:1.0.0-beta01'
kapt "com.google.dagger:hilt-compiler:$hilt_version"
kapt "com.google.dagger:hilt-android-compiler:$hilt_version"
kapt 'androidx.hilt:hilt-compiler:1.0.0-beta01'
// INSTRUMENTED TESTS
...
androidTestImplementation "com.google.dagger:hilt-android-testing:$hilt_version"
kaptAndroidTest "com.google.dagger:hilt-android-compiler:$hilt_version"
androidTestImplementation "androidx.work:work-testing:2.5.0"
//KOTLIN
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.32"
//LIFECYCLE
implementation 'androidx.lifecycle:lifecycle-common-java8:2.3.1'
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1'
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.3.1'
// WORK MANAGER
implementation "androidx.work:work-runtime-ktx:2.5.0"
}
Kennt jemand diesen Fehler und weiß, was die Lösung sein kann?
Mit hilt können Sie ein ViewModel ohne Factory initialisieren. Können Sie den Code Ihres ViewModels zeigen!
– Ameentischler
25. April 2021 um 18:05 Uhr
Ich habe das gleiche Problem. Das Entfernen dieses Imports scheint es für mich behoben zu haben
implementation 'androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha03'
– Rafsandschani
25. April 2021 um 20:39 Uhr
@Rafsanjani vielen Dank. Sie haben Recht. Das
androidx.hilt:hilt-lifecycle-viewmodel
Abhängigkeit war das Problem. Es war auch in der Beta-Version überflüssig. Schreib die Antwort gerne 😉– Patryk Kubiak
26. April 2021 um 20:03 Uhr
@Rafsanjani Vielen Dank. Ich habe einen etwas anderen Fehler erhalten, es war so etwas wie “My.packages.SingletonC konnte nicht verarbeitet werden”, aber es wurde auch DefaultActivityViewModelFactory erwähnt, und ich habe noch nicht einmal ViewModels oder UI, die sie verwenden (Umschreiben einer App und haben Sie nur die Datenschicht, das Repo und einen Teil des DI-Setups). Das Auskommentieren dieser Lifecycle-Viewmodel-Abhängigkeit hat es behoben.
– Muschel
10. August um 5:42