L'erreur spécifique est la suivante :
错误: Type of the parameter must be a class annotated with @Entity or a collection/array of it.
kotlin.coroutines.Continuation<? super kotlin.Unit> continuation);
错误: Not sure how to handle insert method's return type.
public abstract java.lang.Object insertAll(@org.jetbrains.annotations.NotNull()
Après avoir mis à jour la version Kotlin, j'ai utilisé le module de la bibliothèque Android Jetpack Room pour compiler une erreur. Après quelques recherches, je n'ai pas trouvé la bonne solution. Après avoir comparé le fichier source kotlin et le fichier java compilé, j'ai trouvé que c'était une fonction définie dans la classe Dao de Room. L'ajout de suspension entraîne l'ajout d'un paramètre à la fonction compilée :
@org.jetbrains.annotations.Nullable() @androidx.room.Insert(onConflict = androidx.room.OnConflictStrategy.REPLACE) public abstract java.lang.Object insertAll(@org.jetbrains.annotations.NotNull() java.util. List<ButtonEntity> list, @org.jetbrains.annotations.NotNull() kotlin.coroutines.Continuation<?super kotlin.Unit> continuation);
Ceci est @org.jetbrains.annotations.NotNull() kotlin.coroutines.Continuation<? super kotlin.Unit> continuation) Le type du paramètre doit être une classe annotée avec @Entity ou une collection/tableau de celle-ci. erreur lors de la compilation.
La raison spécifique n'a pas été étudiée pour le moment. La solution temporaire est de supprimer la suspension de la fonction dans la classe Dao. Je l'enregistre ici. J'étudierai les tenants et les aboutissants de ce problème plus tard quand j'aurai le temps.
Mise à jour le 09 août 2022 :
Les amis qui rencontrent ce problème peuvent suivre Lantian Laoli et DukerDev dans les commentaires pour mettre à jour Room vers la version correspondante pour résoudre ce problème. Merci pour votre réponse enthousiaste !