lint任务上的gradle构build失败

我有一个简单的Android项目,我用Android Studio 0.4.0创build。 我使用Gradle 1.9和Gradle Android Plugin 0.7。 昨天我在我的gradle构build脚本中添加了Jake Wharton的ButterKnife库 :

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运行应用程序时,构build运行良好,并在我的设备上正确执行。 但是,当我尝试(从命令行) 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. 

也许我错过了一些东西,但是不能在terminal块中build立项目的CI为Android项目的可能性。

任何帮助将是伟大的。

随着0.7.0的增加支持林特,但是,它不能正常工作。 (如黄油刀库)

解决方法是禁用build立在发现的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规则,并保持构build失败,使用这个:

 /* * 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' } } 

如果abortOnError false不能解决你的问题,你可以试试这个。

 lintOptions { checkReleaseBuilds false } 

您可以从这里select适当的选项

 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' } } 

我在Android Studio中发生了一些只有在生成签名APK时才发生的lint错误。

为了避免它,我添加了以下build.gradle

 android { lintOptions { checkReleaseBuilds false } } 

将这些行添加到您的build.gradle文件中:

 android { lintOptions { abortOnError false } } 

然后清理你的项目:D

如果你想避免“abortInError false”选项,看看build / lint-results-release-fatal.html文件。 这是由lint检测到的错误。

我希望这可以帮助别人!

在AndroidStudio版本0.51上得到同样的错误

生成工作正常,突然间,只更改版本代码值后,我得到了一个Lint相关的生成错误。

试图改变build.gradle ,清除AndroidStudiocaching并重新启动,但没有改变。

最后,我返回到原始代码(导致错误),并从AndroidManifest.xml删除android:debuggable="false" ,导致构build成功。

我再次添加它,它仍然有效…不要问我为什么:S

在Android Studio v1.2中,它告诉你如何解决它:

在这里输入图像描述

至于我,这是一个不好的和快速的解决你的问题:

 android { lintOptions { abortOnError false } } 

更好的解决scheme是解决代码中的问题,因为lint工具会检查您的Android项目源文件是否存在潜在的错误,并针对正确性,安全性,性能,可用性,可访问性和国际化进行优化改进。

最常出现的这个问题是

  • 布局包括未解决的符号或缺less一些属性
  • 其他结构性问题(如使用目标API版本不支持的弃用元素或API调用)可能导致代码无法正确运行。

在Android Studio中使用Inspect Code查找错误: 使用Lint改进您的代码

 android.lintOptions.abortOnError false 

到你的app \ build.gradle