La liaison de données échoue avec NoSuchMethodError

Après la mise à jour vers Gradle 2.10 chaque fois que j'essaie de assemble compilation de débogage de l'application, j'obtiens l'exception NoSuchMethodError . Voici la partie pertinente du journal de construction:

 java.lang.RuntimeException: failure, see logs for details. cannot generate view binders java.lang.NoSuchMethodError: com.google.common.base.Strings.isNullOrEmpty(Ljava/lang/String;)Z at android.databinding.tool.util.StringUtils.capitalize(StringUtils.java:57) at android.databinding.tool.util.ParserHelper.toClassName(ParserHelper.java:23) at android.databinding.tool.store.ResourceBundle$LayoutFileBundle.getFullBindingClass(ResourceBundle.java:551) at android.databinding.tool.store.ResourceBundle$LayoutFileBundle.getBindingClassPackage(ResourceBundle.java:541) at android.databinding.tool.CompilerChef.pushClassesToAnalyzer(CompilerChef.java:124) at android.databinding.tool.CompilerChef.createChef(CompilerChef.java:73) at android.databinding.annotationprocessor.ProcessExpressions.writeResourceBundle(ProcessExpressions.java:148) at android.databinding.annotationprocessor.ProcessExpressions.onHandleStep(ProcessExpressions.java:82) at android.databinding.annotationprocessor.ProcessDataBinding$ProcessingStep.runStep(ProcessDataBinding.java:154) at android.databinding.annotationprocessor.ProcessDataBinding$ProcessingStep.access$000(ProcessDataBinding.java:139) at android.databinding.annotationprocessor.ProcessDataBinding.process(ProcessDataBinding.java:66) 

Comme vous pouvez le voir, la méthode com.google.common.base.Strings.isNullOrEmpty ne peut pas être trouvée.

  • Créer un projet Android avec Jenkins: Impossible d'initialiser les analyses
  • Application Android bloquant (fragment et xml onclick)
  • Faire fonctionner le tiroir de navigation derrière la barre d'état
  • SIP: ERREUR DATA_CONNECTION_LOST
  • Comment puis-je ajouter un «projet de bibliothèque» dans IntelliJ IDEA?
  • La classe Places est supprimée des services de jeux Android 9.2.0
  • Quelques détails

    J'utilise Retrolambda 3.2.5 et Java 8. Il n'y a pas d'autres plugins supplémentaires.

    Créer une version de plugin: com.android.tools.build:gradle:2.0.0

    Version des outils de construction: 23.0.3

    OS: OS X

    build.gradle ressemble à ceci. Je l'ai légèrement modifié pour ne pas exposer certaines choses privées, mais le problème est toujours là.

     buildscript { repositories { jcenter() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:2.0.0' classpath 'me.tatarka:gradle-retrolambda:3.2.3' } } apply plugin: 'com.android.application' apply plugin: 'me.tatarka.retrolambda' project.version = '1.0.0' afterEvaluate { tasks.matching { it.name.startsWith('dex') }.each { dx -> if (dx.additionalParameters == null) { dx.additionalParameters = [] } dx.additionalParameters += "--set-max-idx-number=50000" // default 60000 } } def googleApiKey = "key goes here" def appVersionCode = 1 def appVersionName = project.version + "." + appVersionCode android { compileSdkVersion 23 buildToolsVersion "23.0.3" defaultConfig { minSdkVersion 15 targetSdkVersion 23 manifestPlaceholders = [googleApiKey : googleApiKey, appVersionCode: appVersionCode, appVersionName: appVersionName] multiDexEnabled true ndk { abiFilters "armeabi", "armeabi-v7a" } } buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard.cfg' applicationVariants.all { variant -> variant.outputs.each { output -> output.outputFile = new File( output.outputFile.parent, "App-${project.version}-${appVersionCode}.apk" ) } } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } } flavorDimensions "multidex", "leakcanary" productFlavors { withLeakCanary { dimension "leakcanary" } withoutLeakCanary { dimension "leakcanary" } develDex { dimension "multidex" minSdkVersion 21 targetSdkVersion 23 } prodDex { dimension "multidex" minSdkVersion 15 targetSdkVersion 23 } } packagingOptions { exclude 'META-INF/LICENSE.txt' exclude 'META-INF/LICENSE' exclude 'META-INF/NOTICE.txt' exclude 'META-INF/NOTICE' exclude 'META-INF/DEPENDENCIES' } lintOptions { abortOnError false } sourceSets { main { jniLibs.srcDir 'build/jniLibs' } } dexOptions { javaMaxHeapSize "4g" } dataBinding { enabled = true } } task copyNativeLibs(type: Copy) { from(new File(buildDir, 'intermediates/exploded-aar/')) { include '**/*.so' exclude '**/lib-detector.so' } into new File(buildDir, 'jniLibs') eachFile { details -> def pathSplit = details.path.split('/') details.path = pathSplit[pathSplit.length - 2] + '/' + pathSplit[pathSplit.length - 1] } includeEmptyDirs = false } tasks.withType(JavaCompile) { javaCompileTask -> javaCompileTask.dependsOn copyNativeLibs } clean.dependsOn 'cleanCopyNativeLibs' dependencies { testCompile 'junit:junit:4.11' testCompile 'org.robolectric:robolectric:3.0' testCompile 'org.robolectric:shadows-multidex:3.0' testCompile('org.robolectric:shadows-httpclient:3.0') { exclude module: 'httpcore' exclude module: 'commons-codec' } testCompile 'org.powermock:powermock-module-junit4:1.5.2' testCompile 'org.powermock:powermock-api-mockito:1.5.2' testCompile 'org.roboguice:roboguice:3.0.1' compile 'com.parse.bolts:bolts-android:1.2.1' compile fileTree(dir: 'libs', include: 'Parse-*.jar') compile 'com.google.android.gms:play-services-drive:7.8.0' compile 'com.squareup.retrofit:retrofit:1.9.0' compile 'com.android.support:multidex:1.0.1' compile 'com.android.support:support-annotations:23.0.1' compile 'com.android.support:support-v4:23.0.1' compile 'com.android.support:appcompat-v7:23.0.1' compile 'com.android.support:recyclerview-v7:23.0.1' compile 'com.android.support:design:23.0.1' compile 'org.roboguice:roboguice:3.0.1' provided 'org.roboguice:roboblender:3.0.1' compile('com.google.inject.extensions:guice-assistedinject:3.0') { exclude group: 'com.google.inject', module: 'guice' } compile 'commons-io:commons-io:2.4' compile 'commons-lang:commons-lang:2.6' compile 'com.intellij:annotations:12.0' compile 'com.google.zxing:core:3.2.1' compile 'com.google.zxing:android-core:3.2.1' compile 'com.google.android.gms:play-services-base:7.8.0' compile 'com.google.android.gms:play-services-location:7.8.0' compile 'com.google.android.gms:play-services-maps:7.8.0' compile 'com.google.android.gms:play-services-analytics:7.8.0' compile 'com.amazon:in-app-purchasing:2.0.1' compile 'com.googlecode.libphonenumber:libphonenumber:7.0.7' withLeakCanaryCompile 'com.squareup.leakcanary:leakcanary-android:1.3.1' compile 'com.google.android.gms:play-services-ads:7.8.0' compile 'io.reactivex:rxandroid:1.0.1' compile 'io.reactivex:rxjava:1.0.14' } 

    Question

    Est-ce que quelqu'un d'autre avait le même problème? Comment le réparer? Si vous avez besoin d'informations supplémentaires, faites-le moi savoir dans les commentaires.

  • Pouvez-vous cacher un élément dans une mise en page, par exemple un spinner, selon une activité?
  • React-Native, Android, Genymotion: serveur ADB n'a pas ACK
  • Simuler aucun réseau en utilisant Retrofit et MockWebServer
  • Effet de défilement avec plusieurs viewpagers
  • Annuler le chargement dans WebView sur Android
  • Rénovation et OkHttpClient, délai de connexion de capture en mode défaillance
  • 2 Solutions collect form web for “La liaison de données échoue avec NoSuchMethodError”

    Avez-vous essayé le nouveau patch sur jitpack de simular issue # 134 clean-build, il semblait y avoir quelque chose qui ne va pas avec gradle import ordering, vous pouvez l'essayer avec:

     repositories { maven { url "https://jitpack.io" } } dependencies { classpath 'com.github.denis-itskovich:gradle-retrolambda:3.2.3-fix-134' } 

    Il semble qu'il y ait une erreur avec un plugin après la mise à niveau de Android Studio.

    Si vous entrez: <Android Studio Dir>/plugins/android/lib/builder-model-xxxjar vous pouvez trouver 2 .jars. Essayez de supprimer l'ancienne version .jar et conservez la nouvelle et nettoyez et reconstruisez le projet.

    Si ce qui précède ne fonctionne pas, essayez ceci:

    Modifiez la version de la bibliothèque Objectify dans le fichier build.gradle de votre backend à 4.0b à 5.0.3 ou supérieur s'il existe.

    Cela peut sembler non pertinent mais objectify 4.0b la bibliothèque a les mêmes classes avec le même nom de package qui sont présents dans appengine sdk comme com.google.common.base.Strings.isNullOrEmpty.

    Lorsque vous déployez le backend de l'application, les classes appengine sont remplacées par des classes objectivées et, par conséquent, lorsque vous essayez d'appeler une méthode, elle lance une erreur.

    Ceci est résolu dans objectify 5.0. +

    J'espère que ça m'aide car cela m'a aidé à résoudre ce problème.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.