web-dev-qa-db-fra.com

la databinding n'existe pas: comment la résoudre?

Je travaille sur une application Android avec liaison de données, mais j'ai toujours l'erreur suivante:

Erreur: Le package my.package.databinding n'existe pas.

Voici mon build.gradle au niveau du projet:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.Android.tools.build:gradle:2.2.2'
    }
}
allprojects {
    repositories {
        jcenter()
    }
}
task clean(type: Delete) {
    delete rootProject.buildDir
}

J'ai également activé la liaison dans le fichier build.gradle au niveau du module.

Maintenant, ma question est la suivante: pourquoi cette erreur se produit-elle et comment puis-je la résoudre?

12
H. Pauwelyn

Ce problème se produit généralement si votre projet ne compile pas. La liaison de données Android devrait générer du code dans le paquet nommé, mais elle ne le peut pas si le projet ne se compile pas.

Pour résoudre ce problème, amenez votre projet à un point où il se compile. Si nécessaire, désactivez la liaison de données pour cela.

23
F43nd1r

vérifiez vos fichiers XML et commentez tous les @ {} que vous avez utilisés, à moins que vos données ne soient réellement à portée de main. Sans données, vous rencontrerez encore et encore cette erreur.

3
Marzieh Bahri

Je suis tombé sur ce problème dans un projet de 4 modules dans Android Studio 2.3, c'est ce que @ F43nd1r a indiqué, mais je souhaite documenter ce que j'ai fait pour résoudre ce problème dans mon cas.

L'un des 4 modules contenait une ancienne bibliothèque de support Android dans le fichier Gradle, alors que les 3 autres étaient à jour. C'est ce qui a empêché le projet de compiler correctement et de provoquer l'erreur de liaison de données.

La partie difficile était que vous ne le saviez pas à moins d’ouvrir chaque fichier build.gradle et de voir s’il y avait une erreur affichée. Il n'a pas montré d'erreur pour compiler.

J'ai effectivement mis à jour cette zone avec le numéro de version le plus récent pour qu'il corresponde aux 3 autres fichiers build.gradle du module.

dependencies {
    ...
    compile 'com.Android.support:appcompat-v7:25.2.0'
    compile 'com.Android.support:support-v4:25.2.0'
    compile 'com.Android.support:recyclerview-v7:25.2.0'
    compile 'com.Android.support:design:25.2.0'
    ...
}
3
Kirk
dataBinding {
    enabled = true
}

activé la liaison de données dans le fichier build.gradle de l'application. c'est travaillé 

1
Vinod Makode

Pour voir l'erreur, éditez simplement ces lignes de code dans le fichier build.gradle de l'application:

dataBinding { enabled = false }

De cette manière, la dernière erreur dans votre console de génération est l’erreur réelle. Parce que de la première à l’avant-dernière erreur, ils sont tous liés à la non-génération des classes de liaison de données, précisément parce que nous l’avons désactivée.

Une fois que vous avez trouvé l'erreur, vous entrez à nouveau:

dataBinding {

enabled = true } 

1
AlexPad

Sur la base de problèmes similaires sur SO, les raisons peuvent ne pas être liées à la liaison de données Android, mais plutôt à des appels de variables incorrects, comme dans ce issue ou à d’autres facteurs tels que cet autre problème . Vous devriez fournir plus de détails si aucun de ces liens ne vous aide.

0
Chidi Chris