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.

  • Android - cache la barre d'action pendant le démarrage, puis affiche-la à nouveau?
  • La cible du projet (Android L (Aperçu)) n'a pas été correctement chargée
  • Concevez un HorizontalScrollView à l'intérieur de ViewPager ou utilisez des fragments:
  • Comment faire pour que le clavier ne démarre pas lors du lancement de l'activité dans Android?
  • Puis-je faire défiler une ScrollView par programme dans Android?
  • Comment puis-je désactiver le mode multi-vides pour une activité dans Android N +
  • 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.

  • Générer une image de code à barres dans une application Android
  • Android: pourquoi getDimension et getDimensionPixelSize renvoient-ils les mêmes?
  • Comment obtenir l'ID du fichier afin que je puisse effectuer un téléchargement d'un fichier de l'API Google Drive sur Android
  • Comment formater Android date sans année et afficher mois et jour en fonction des paramètres locaux?
  • SecurityException lorsque vous appelez getLastKnownLocation
  • Configuration de ProGuard avec les projets de bibliothèque Android
  • 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.