J'ai un simple projet Android 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é le Bibliothèque ButterKnife de Jake Wharton dans mon script de création de diplômes:
dependencies {
compile 'com.Android.support:support-v4:19.0.0'
compile 'com.Android.support:appcompat-v7:19.0.0'
// Butterknife
compile 'com.jakewharton:butterknife:4.0.1'
}
Lorsque j'exécute l'application à partir de Android Studio, la construction fonctionne correctement et s'exécute correctement sur mes appareils. Mais lorsque j'essaie (à partir de la ligne de commande) gradle build
, la construction échoue. Voici une partie de mon rapport de charpie:
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 me 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 , le support étendu de Lint est étendu, toutefois, cela ne fonctionne pas toujours correctement. (Par exemple, la bibliothèque butterknife)
La solution consiste à désactiver l'abandon de la construction sur les erreurs de lint trouvées
Je me suis inspiré de https://Android.googlesource.com/platform/tools/base/+/e6a5b9c7c1bca4da402de442315b5ff1ada819c7
(discussion: https://plus.google.com/+AndroidDevelopers/posts/ersS6fMLxw1 )
Android {
// your build config
defaultConfig { ... }
signingConfigs { ... }
compileOptions { ... }
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 une règle de Lint particulière 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'
}
}
Il y a eu quelques erreurs de peluche dans Android Studio qui se sont produites uniquement lorsque j'ai généré un fichier 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
}
}
Puis 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 explique comment y remédier:
Quant à moi, c'est une mauvaise et rapide solution à votre problème:
Android {
lintOptions {
abortOnError false
}
}
Une meilleure solution consiste à résoudre le problème dans votre code, car l'outil Lint vérifie l'exactitude de vos fichiers source de projet Android. , sécurité, performance, convivialité, accessibilité et internationalisation.
Ce problème est le plus fréquent lorsque:
Trouvez vos bogues par Inspect Code
dans Android Studio: Améliorez votre code avec Lint
Même erreur sur AndroidStudio version 0.51
La compilation fonctionnait correctement et soudainement, après seulement avoir modifié la valeur du code de version, une erreur de compilation liée à Lint s’est produite.
Je ai essayé de changer build.gradle
, effacé le cache AndroidStudio et redémarrez, mais pas de changement.
Enfin, je suis revenu au code d'origine (à l'origine de l'erreur) et j'ai retiré Android:debuggable="false"
de AndroidManifest.xml
, ce qui a permis la réussite de la construction.
Je l'ai ajouté à nouveau et cela fonctionne toujours ... Ne me demandez pas pourquoi: S
Ajouter
Android.lintOptions.abortOnError false
à votre application\build.gradle