J'essaie de créer mon composant d'application, mais Dagger ne génère pas mon composant d'application. voici MyApplication classe
class MyApplication : Application() {
companion object {
@JvmStatic lateinit var graph: ApplicationComponent
}
@Inject
lateinit var locationManager : LocationManager
override fun onCreate() {
super.onCreate()
graph = DaggerApplicationComponent.builder().appModule(AppModule(this)).build()
graph.inject(this)
}
}
et voici ma classe AppComponent
@Singleton
@Component(modules = arrayOf(AppModule::class))
interface ApplicationComponent {
fun inject(application: MyApplication)
}
c'est mon projet sur github
voici le journal des erreurs
Error:(7, 48) Unresolved reference: DaggerApplicationComponent
Error:(28, 17) Unresolved reference: DaggerApplicationComponent
Error:Execution failed for task ':app:compileDebugKotlin'.
> Compilation error. See log for more details
Information:BUILD FAILED
Information:Total time: 21.184 secs
Error:e: .../MyApplication.kt: (7, 48): Unresolved reference: DaggerApplicationComponent
e: Unresolved reference: DaggerApplicationComponent
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:compileDebugKotlin'.
> Compilation error. See log for more details
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
Information:4 errors
Information:0 warnings
Information:See complete output in console
ma solution est d'ajouter
apply plugin: 'kotlin-kapt'
et retirer
kapt {
generateStubs = true
}
Veuillez essayer d'activer génération de stubs , cela pourrait être la raison pour laquelle la classe n'est pas visible à ce stade du processus de construction. Dans votre build.gradle
fichier, niveau supérieur:
kapt {
generateStubs = true
}
Cela m'a aidé à résoudre ce problème
Ajoutez ceci en haut du build.gradle
apply plugin: 'kotlin-kapt'
A l'intérieur de la balise Android
add
kapt {
generateStubs = true
}
Et puis remplacer
annotationProcessor 'com.google.dagger:dagger-compiler:2.11'
à
kapt 'com.google.dagger:dagger-compiler:2.11'
Maintenant Rebuild
le projet par
Build -> Rebuild project
J'ai déjà téléchargé votre projet Github. Merci d'avoir partagé!
La réponse à votre problème est assez simple:
Build -> Rebuild project
Les fichiers de dépendances de poignard seront recréés et l'application sera lancée avec n'importe quel problème.
J'ai déjà vérifié cela avec Android version Studio 2.1.2. Cela fonctionne
vous devez supprimer
kapt {
generateStubs = true}
et ajouter en haut du fichier de notes d'application
apply plugin: 'kotlin-kapt'
alors Dagger s'occupera du reste :)
Dans mon cas, la dépendance du compilateur kapt est manquante. Veuillez également vous assurer d'avoir une dépendance inférieure.
kapt 'com.google.dagger:dagger-compiler:2.15'
app build.gradle
apply plugin: 'com.Android.application'
apply plugin: 'kotlin-Android'
apply plugin: 'kotlin-kapt'
apply plugin: 'kotlin-Android-extensions'
Android {
compileSdkVersion 27
defaultConfig {
applicationId "com.usb.utility"
minSdkVersion 14
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
implementation 'com.Android.support:appcompat-v7:27.1.0'
implementation 'com.Android.support.constraint:constraint-layout:1.0.2'
compile 'com.google.dagger:dagger-Android:2.15'
compile 'com.google.dagger:dagger-Android-support:2.15' // if you use the support libraries
kapt 'com.google.dagger:dagger-Android-processor:2.15'
kapt 'com.google.dagger:dagger-compiler:2.15'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.Android.support.test:runner:1.0.1'
androidTestImplementation 'com.Android.support.test.espresso:espresso-core:3.0.1'
}
Aussi pour Java utilisateurs, la solution consiste simplement à Reconstruire votre projet.
Deux étapes seulement doivent être requises pour les projets mixtes Java/Kotlin:
apply plugin: 'kotlin-kapt'
en haut du fichier de constructionannotationProcessor 'com.google.dagger:dagger-compiler:2.14.1'
avec kapt 'com.google.dagger:dagger-compiler:2.14.1'
La réponse est simple:
Build -> Rebuild project
Ça marche pour moi.
Ajoutez ceci sur le dessus de build.gradle
apply plugin: 'kotlin-kapt'
Ajoutez ceci dans les dépendances
kapt 'com.google.dagger:dagger-compiler:2.15'
kapt 'com.google.dagger:dagger-Android-processor:2.15'
Après cela, reconstruisez votre projet. j'espère que ça marchera. Merci
Veuillez essayer d'ajouter ceci à votre build.gradle
Android {
dexOptions {
incremental false
}
EDIT: apparemment un an plus tard, cela peut se produire si vous ne postulez pas kotlin-kapt
brancher. Assurez-vous également d'utiliser kapt
au lieu de annotationProcessor
.