web-dev-qa-db-fra.com

Liaison de données Android avale les erreurs d'autres compilateurs

S'il y a des erreurs lors de la compilation, les classes de liaison de données ne sont pas générées - et en tant que telles, je reçois une tonne d'erreurs comme celle-ci:

  symbol:   class DataBindingComponent
  location: class TrainingActivityCompletedSetBinding
  e: S:\ProjectLocation\TrainingActivityCompletedSetBinding.Java:60: error: cannot find symbol
  @Nullable DataBindingComponent component)

Le problème est que l'erreur de compilation n'est pas du tout liée à la liaison de données, et en tant que telle, je n'ai aucune idée de ce qui la cause réellement - et je dois creuser manuellement dans les fichiers pour trouver le problème.

Dans l'exemple ci-dessus, j'ai simplement omis @Inject à un constructeur qui en a besoin. Il serait bon de voir le message d'erreur de Dagger dans ce cas afin que je puisse le trouver immédiatement, plutôt que d'avoir à creuser dans toutes les classes de projets pour le trouver manuellement.

Toute aide serait grandement appréciée! 


Android Studio et Databinding sont actuellement sur la version 3.1.3, l'erreur existe depuis la version 3.0 au moins. 

Utiliser Kotlin V1.2.41 et kapt pour générer du code.

J'ai essayé d'augmenter le nombre maximal d'erreurs que le compilateur indiquerait, malheureusement aucune différence.

Une solution temporaire consiste à désactiver simplement la liaison de données V2: Android.databinding.enableV2=true dans gradle.properties. Toujours ouvert à une meilleure solution cependant.

8
zoltish

Je ne peux pas écrire de commentaire, je vais donc l'écrire ici . Vous vouliez probablement ajouter une ligne comme celle-ci: Android.databinding.enableV2=false, donc ça fonctionnera correctement.

5
Aqluse

Je vois que vous avez dit que vous avez essayé d’augmenter le nombre maximal d’erreurs que le compilateur indiquerait, mais au cas où cela aiderait les autres qui trouvent leur chemin ici:

Au lieu de désactiver la liaison de données V2, vous pouvez suivre ce post sur le forum qui montre comment étendre le nombre d’erreurs affichées. Cela a résolu mon problème sans désactiver la V2 à chaque fois.

Cela corrigeait mon problème même si le nombre d'erreurs qui m'a été montré n'était pas un nombre arrondi, alors je ne suis pas sûr du fonctionnement du comptage.

https://github.com/google/dagger/issues/306

1
Squimon

J'ai cité et poursuivi la réponse de @Aqluse ici aussi d'un autre fil ici .

Voici l'alternative pour résoudre ce problème de liaison de données. 

1. kapt "androidx.databinding:databinding-compiler:${your gradle version}"
2. Android.databinding.enableV2=false
3. check your missing or wrong import XML **check your version control**
4. upgrade your Android studio to the latest stable
0
mochadwi