web-dev-qa-db-fra.com

La liaison de données ne fonctionne pas après la mise à niveau d'Android Studio 2.3

DataBinding a très bien fonctionné dans mon projet, mais après la mise à niveau d’Android Studio 2.3 aujourd’hui. Run 'app' a échoué car l'erreur suivante: 

Error:(15, 40) Error: package com.javan.myrecorder.databinding not exist.
import com.javan.myrecorder.databinding.FragmentEventsBinding;
:app:compileMockDebugJavaWithJavac FAILED

Je viens de mettre à jour Android studio et je n'ai rien changé. tout le plugin est le dernier! Maintenant, ma question est la suivante: pourquoi cette erreur se produit-elle et comment puis-je la résoudre? toute aide est la bienvenue!

L'anglais n'est pas ma langue maternelle. veuillez excuser les erreurs de ma part.


EDIT1

J'aime le projet Android googlesamples/Android-architecture

  • git checkout todo-databinding 
  • puis exécutez ./gradlew assembleDebug pour construire, la construction a échoué à cause de l'erreur suivante:

journal complet de construction


EDIT2 J'ai résolu ce problème en suivant La liaison de données s'est rompue après la mise à niveau vers Gradle 2.3.

dans build.gradle(app) add 

apply plugin: 'com.Android.application'
apply plugin: 'com.neenbedankt.Android-apt'

..balabala

dependencies {
    apt 'com.Android.databinding:compiler:2.3.0'
}

des fichiers dans mon projet:

gradle-wrapper.properties

#Mon Mar 06 10:59:04 CST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.Zip

@petrnohejl @ George Mount @ Sa-Zad Prasla, merci!

17
Javan

Android-apt et donc utiliser apt est obsolète depuis Android Studio 2.2.
Après le Guide de migration Android-apt , ajoutez plutôt ce qui suit à votre build.gradle:

dependencies {
    classpath 'com.Android.tools.build:gradle:2.3.0' // use same gradle version!
    annotationProcessor 'com.Android.databinding:compiler:2.3.0'
}

Si vous utilisez Kolin, utilisez plutôt:

apply plugin: 'kotlin-kapt'

dependencies {
    classpath 'com.Android.tools.build:gradle:2.3.0' // use same gradle version!
    kapt 'com.Android.databinding:compiler:2.3.0'
}
14
Josh Bowden

Le problème vient dans un avertissement difficile à voir parmi toutes les erreurs:

Avertissement: Utilisation de plugins incompatibles pour le traitement des annotations: Android-apt. Cela peut entraîner un comportement inattendu.

Si vous supprimez apt, la liaison de données fonctionne.

2
George Mount

J'ai également été confronté au même problème… Je utilisais ButterKnife and Dagger !!

Résolu comme suit

1) Supprimer du fichier de niveau d'application:

appliquer le plugin: 'Android-apt' ou appliquer le plugin: 'com.neenbedankt.Android-apt'

2) Supprimer du fichier de niveau de projet:

classpath 'com.neenbedankt.gradle.plugins: Android-apt: 1.8'

3) Et changez simplement "apt to annotationProcessorchange" comme dépendances suivantes:

apt 'com.jakewharton: butterknife-compiler: 8.5.1', ​​ apt "com.google.dagger: dagger-compiler: 2.5"

À:

annotationProcessor 'com.jakewharton: butterknife-compiler: 8.5.1', ​​ annotationProcessor "com.google.dagger: compilateur de dagues: 2.5"

2
raghu

La liaison de données a également été rompue après la mise à jour vers Android Studio v2.3. Le plugin GoLang Bind est devenu incapable de générer des fichiers de bibliothèque .aar

Notre problème a été résolu via une combinaison de la mise à jour de la version "+ eb90329 du 7 mars 2017" de GoMobile et du retour du plug-in GoBind vers la version "0.2.6" (bien que la version actuelle soit "0.2.8").

Mettre à jour GoMobile:

  $ go get -u -x golang.org/x/mobile/cmd/gomobile
  $ gomobile init -x

Rétablir le plugin GoBind dans build.gradle:

  plugins {
    id "org.golang.mobile.bind" version "0.2.6"
  }

Cette solution fonctionne sur les systèmes dotés des versions 1.7.1 et 1.8 de Google Go, ainsi que des versions 2.1.2, 2.2.3 et 2.3 d'Android Studio.

1
David Manpearl

J'ai aussi récemment téléchargé la dernière version d'Android Studio 2.3.3, car j'avais la même erreur dans la version 2.2.3, c.-à-d. Erreur: Impossible de résoudre: com.Android.databinding: compilateur: 2.2.3, même dans la dernière version, la même erreur se produisait, j’ai vérifié la structure du projet. Dans Fichier> Structure du projet> Projet, la version du plug-in Android était toujours la version 2.2.3, je l’ai modifiée en 2.3.3 et la la construction est réussie et tout fonctionne bien.

0
Harsh Saini

Deux choses Revenez votre gradel-wrapper.properties distributionUrl à "https://services.gradle.org/distributions/gradle-2.14.1-all.Zip" Modifiez le chemin de classe de la version gradle en version précédente " 'com.Android.tools.build:gradle:2.2.3' "

P.S. L'exécution instantanée cessera de fonctionner sur ADT avec une version plus ancienne de Gradle.

0
Sa-Zad Prasla