Gradle построить сбой при выполнении задачи
У меня есть простой проект Android, который я создал с Android Studio 0.4.0.
Я использую Gradle 1.9 и Gradle Android Plugin 0.7. Вчера я добавил Jake Wharton библиотеку ButterKnife в моей Gradle сборке script:
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'
}
Когда я запускаю приложение из Android Studio, сборка выполняется нормально и корректно выполняется на моих устройствах. Но когда я пытаюсь (из командной строки) gradle build
, сборка завершается с ошибкой. Вот часть моего отчета:
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.
Возможно, я что-то упустил, но не смог построить проект в терминале, блокирует возможность реализации проекта CI для Android.
Любая помощь будет большой.
Ответы
Ответ 1
С 0.7.0 появляется расширенная поддержка Lint, однако она не работает всегда правильно. (Например, библиотека с масляным ножом)
Решение состоит в том, чтобы отключить прервать сборку найденных ошибок lint
Я черпал вдохновение из
https://android.googlesource.com/platform/tools/base/+/e6a5b9c7c1bca4da402de442315b5ff1ada819c7
(реализация:
https://android.googlesource.com/platform/tools/base/+/e6a5b9c7c1bca4da402de442315b5ff1ada819c7/build-system/gradle/src/main/groovy/com/android/build/gradle/internal/model/DefaultAndroidProject.java)
(обсуждение: 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
}
}
И если вам нужно отключить только определенное правило Lint и сохранить сбои сборки на других, используйте это:
/*
* 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'
}
}
Ответ 2
Если abortOnError false
не решит вашу проблему, вы можете попробовать это.
lintOptions {
checkReleaseBuilds false
}
Ответ 3
Вы можете выбрать подходящие параметры здесь
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'
}
}
Ответ 4
У меня были некоторые ошибки lint в Android Studio, которые произошли только тогда, когда я сгенерировал подписанный APK.
Чтобы избежать этого, я добавил следующее в build.gradle
android {
lintOptions {
checkReleaseBuilds false
}
}
Ответ 5
Добавьте эти строки в файл build.gradle:
android {
lintOptions {
abortOnError false
}
}
Затем очистите проект: D
Ответ 6
Если вы хотите избежать опции "abortInError false", посмотрите файл build/lint-results-release-fatal.html. Здесь обнаружены erros, обнаруженные lint.
Надеюсь, это поможет кому-то!
Ответ 7
Получена такая же ошибка для AndroidStudio версии 0.51
Сборка работала нормально, и вдруг, только изменив значение кода версии, я получил ошибку сборки, связанную с Lint.
Попробовал изменить build.gradle
, очистил кеш AndroidStudio и перезапустил, но никаких изменений не было.
Наконец, я вернулся к исходному коду (вызывая ошибку) и удалил android:debuggable="false"
из AndroidManifest.xml
, в результате чего сборка была успешной.
Я добавил его снова, и он все еще работает... Не спрашивайте меня, почему: S
Ответ 8
В Android Studio v1.2 вы узнаете, как его исправить:
![enter image description here]()
Ответ 9
Что касается меня, это решение плохое и быстрое для вашей проблемы:
android {
lintOptions {
abortOnError false
}
}
Лучшее решение решает проблему в вашем коде, потому что инструмент lint проверяет исходные файлы проекта Android на возможные ошибки и улучшает оптимизацию для правильности, безопасности, производительности, удобства использования, доступности и интернационализации.
Эта проблема наиболее часто встречающаяся, когда:
- Макет включает неразрешенные символы или отсутствующие атрибуты
- Другие структурные проблемы, такие как использование устаревших элементов или вызовы API, которые не поддерживаются версиями целевого API, могут привести к неправильной работе кода.
Найдите свои ошибки Inspect Code
в Android Studio: Улучшите свой код с помощью Lint
Ответ 10
Добавить
android.lintOptions.abortOnError false
в ваше приложение\build.gradle