gradle build échoue sur la tâche de peluches

J’ai un projet Android simple que j’ai créé avec Android Studio 0.4.0. J’utilise Gradle 1.9 et Gradle Android Plugin 0.7. Hier, j’ai ajouté la bibliothèque ButterKnife de Jake Wharton dans mon script de compilation:

dependencies { comstack 'com.android.support:support-v4:19.0.0' comstack 'com.android.support:appcompat-v7:19.0.0' // Butterknife comstack 'com.jakewharton:butterknife:4.0.1' } 

Lorsque je lance l’application depuis Android Studio, la construction se déroule correctement et s’exécute correctement sur mes appareils. Mais quand j’essaie (à partir de la ligne de commande), gradle build la construction échoue. Voici un extrait de mon rapport sur les peluches:

 InvalidPackage: Package not included in Android /home/yami/.gradle/caches/modules-2/files-2.1/com.jakewharton/butterknife/4.0.1/f43b36925363701633d01adb8e54df7150397a78/butterknife-4.0.1.jar: Invalid package reference in library; not included in Android: javax.annotation.processing. Referenced from butterknife.internal.InjectViewProcessor. /home/yami/.gradle/caches/modules-2/files-2.1/com.jakewharton/butterknife/4.0.1/f43b36925363701633d01adb8e54df7150397a78/butterknife-4.0.1.jar: Invalid package reference in library; not included in Android: javax.annotation.processing. Referenced from butterknife.internal.InjectViewProcessor. /home/yami/.gradle/caches/modules-2/files-2.1/com.jakewharton/butterknife/4.0.1/f43b36925363701633d01adb8e54df7150397a78/butterknife-4.0.1.jar: Invalid package reference in library; not included in Android: javax.annotation.processing. Referenced from butterknife.internal.InjectViewProcessor. /home/yami/.gradle/caches/modules-2/files-2.1/com.jakewharton/butterknife/4.0.1/f43b36925363701633d01adb8e54df7150397a78/butterknife-4.0.1.jar: Invalid package reference in library; not included in Android: javax.annotation.processing. Referenced from butterknife.internal.InjectViewProcessor. /home/yami/.gradle/caches/modules-2/files-2.1/com.jakewharton/butterknife/4.0.1/f43b36925363701633d01adb8e54df7150397a78/butterknife-4.0.1.jar: Invalid package reference in library; not included in Android: javax.annotation.processing. Referenced from butterknife.internal.InjectViewProcessor. 

Peut-être que je manque quelque chose, mais ne pas pouvoir construire le projet dans le terminal bloque la possibilité de CI pour les projets Android.

Toute aide est la bienvenue.

Avec 0.7.0, il existe un support étendu pour Lint, mais cela ne fonctionne pas toujours correctement. (P. Ex. La bibliothèque du couteau à beurre)

La solution consiste à désactiver l’abandon de la construction sur les erreurs de peluches trouvées

Je me suis inspiré de https://android.googlesource.com/platform/tools/base/+/e6a5b9c7c1bca4da402de442315b5ff1ada819c7

(Implémentation: https://android.googlesource.com/platform/tools/base/+/e6a5b9c7c1bca4da402de442315b5ff1ada819c7/build-system/gradle/src/main/groovy/com/android/build/gradle/internal/model/DefaultAndroidProject.java )

(discussion: https://plus.google.com/+AndroidDevelopers/posts/ersS6fMLxw1 )

 android { // your build config defaultConfig { ... } signingConfigs { ... } comstackOptions { ... } buildTypes { ... } // This is important, it will run lint checks but won't abort build lintOptions { abortOnError false } } 

Et si vous avez besoin de désactiver uniquement la règle Lint et de laisser la construction échouer sur d’autres, utilisez ceci:

 /* * Use only 'disable' or only 'enable', those configurations exclude each other */ android { lintOptions { // use this line to check all rules except those listed disable 'RuleToDisable', 'SecondRuleToDisable' // use this line to check just listed rules enable 'FirstRuleToCheck', 'LastRuleToCheck' } } 

Si abortOnError false ne résoudra pas votre problème, vous pouvez essayer ceci.

 lintOptions { checkReleaseBuilds false } 

Vous pouvez sélectionner les options appropriées à partir d’ici

 android { lintOptions { // set to true to turn off analysis progress reporting by lint quiet true // if true, stop the gradle build if errors are found abortOnError false // if true, only report errors ignoreWarnings true // if true, emit full/absolute paths to files with errors (true by default) //absolutePaths true // if true, check all issues, including those that are off by default checkAllWarnings true // if true, treat all warnings as errors warningsAsErrors true // turn off checking the given issue id's disable 'TypographyFractions','TypographyQuotes' // turn on the given issue id's enable 'RtlHardcoded','RtlCompat', 'RtlEnabled' // check *only* the given issue id's check 'NewApi', 'InlinedApi' // if true, don't include source code lines in the error output noLines true // if true, show all locations for an error, do not truncate lists, etc. showAll true // Fallback lint configuration (default severities, etc.) lintConfig file("default-lint.xml") // if true, generate a text report of issues (false by default) textReport true // location to write the output; can be a file or 'stdout' textOutput 'stdout' // if true, generate an XML report for use by for example Jenkins xmlReport false // file to write report to (if not specified, defaults to lint-results.xml) xmlOutput file("lint-report.xml") // if true, generate an HTML report (with issue explanations, sourcecode, etc) htmlReport true // optional path to report (default will be lint-results.html in the builddir) htmlOutput file("lint-report.html") // set to true to have all release builds run lint on issues with severity=fatal // and abort the build (controlled by abortOnError above) if fatal issues are found checkReleaseBuilds true // Set the severity of the given issues to fatal (which means they will be // checked during release builds (even if the lint target is not included) fatal 'NewApi', 'InlineApi' // Set the severity of the given issues to error error 'Wakelock', 'TextViewEdits' // Set the severity of the given issues to warning warning 'ResourceAsColor' // Set the severity of the given issues to ignore (same as disabling the check) ignore 'TypographyQuotes' } } 

J’ai eu quelques erreurs de peluches dans Android Studio qui ne se sont produites que lorsque j’ai généré un APK signé.

Pour l’éviter, j’ai ajouté ce qui suit à build.gradle

 android { lintOptions { checkReleaseBuilds false } } 

Ajoutez ces lignes à votre fichier build.gradle:

 android { lintOptions { abortOnError false } } 

Ensuite, nettoyez votre projet: D

Si vous souhaitez éviter l’option “abortInError false”, consultez le fichier build / lint-results-release-fatal.html. Voici les erreurs détectées par les peluches.

J’espère que cela peut aider quelqu’un!

Dans Android Studio v1.2, il vous indique comment résoudre ce problème:

entrer la description de l'image ici

Vous avez la même erreur sur AndroidStudio version 0.51

La construction fonctionnait bien et soudainement, après avoir seulement modifié la valeur du code de la version, j’ai eu une erreur de construction liée à Lint.

Essayé de modifier build.gradle , effacé le cache AndroidStudio et redémarrer, mais pas de changement.

Enfin, je suis revenu au code d’origine (à l’origine de l’erreur) et android:debuggable="false" supprimé android:debuggable="false" partir d’ AndroidManifest.xml , entraînant la réussite de la construction.

Je l’ai rajouté et ça marche toujours … Ne me demande pas pourquoi: S

Pour moi, c’est une solution mauvaise et rapide à votre problème:

 android { lintOptions { abortOnError false } } 

Une meilleure solution est de résoudre le problème dans votre code, car l’outil Lint vérifie les fichiers source de votre projet Android pour y détecter d’éventuels bogues et optimiser l’optimisation, la sécurité, les performances, la facilité d’utilisation, l’accessibilité et l’internationalisation.

Ce problème se produit le plus souvent lorsque:

  • La mise en page inclut des symboles non résolus ou des atsortingbuts manquants
  • D’autres problèmes structurels, tels que l’utilisation d’éléments obsolètes ou d’appels API qui ne sont pas pris en charge par les versions de l’API cible, peuvent empêcher l’exécution correcte du code.

Trouvez vos bogues par Inspect Code dans Android Studio: Améliorez votre code avec Lint

Ajouter

 android.lintOptions.abortOnError false 

à votre app \ build.gradle