生成签名APK时出现“:app:lintVitalRelease”错误

277

我尝试在Google Play上上传我的apk时遇到了一个错误信息:“您上传了一个可调试的APK。出于安全原因,在发布到Google Play之前,您需要禁用调试功能。 了解有关可调试APK的更多信息。”

然后我在清单文件中写入android:debuggable =“false”并再次尝试。我遇到了相同的错误,所以我将构建变体从我的模块设置为“Release”并再次生成apk,但这一次会生成以下错误:

Error:Gradle: Execution failed for task ':app:lintVitalRelease'.
Lint found fatal errors while assembling a release target.
  To proceed, either fix the issues identified by lint, or modify your build script as follows:
  ...
  android {
      lintOptions {
          checkReleaseBuilds false
          // Or, if you prefer, you can continue to check for errors in release builds,
          // but continue the build even when errors are found:
          abortOnError false
      }
  }
  ...

50
所有的答案似乎要么是不检查错误,要么是在出现错误时不中止程序,但是针对找到问题并进行更正呢?Android Studio没有显示任何有关错误的信息...是否有人能够在不忽略错误的情况下解决这个问题? - Federico Alvarez
请访问此页面以获取答案,它对我有用:https://dev59.com/Z6Dia4cB1Zd3GeqPGZo- - Halim Bezek
6
“但是找到问题并纠正它怎么办?”我也有同样的想法,但我经常忽略底部栏上的“检查结果”选项卡以及build\report文件夹的内容。请检查一下。 - PravyNandas
1
build/report文件夹是一个非常好的提示。对我来说,问题在于缺少翻译,这在HTML报告中很清楚。 - Pete
在出现错误时,谷歌会给你提供解决方案,为什么不先尝试一下呢?同时要先理解错误以及错误信息。 - Mafujul
显示剩余2条评论
28个回答

447

我不建议关闭lint检查,它们存在有一定原因。相反地,应该检查错误并进行修复。

错误报告保存在[应用程序模块]/build/reports/lint-results-yourBuildName-fatal.html。您可以在浏览器中打开此文件以了解错误信息。

如果Gradle能够更清晰地指出错误报告的生成位置将会更好。


9
同意,纠正错误是更好的选择!也可以通过gradlew lint命令手动生成报告,或者通过IDE进行操作,详见https://developer.android.com/studio/write/lint。 - Anigif
3
是的,方向正确。而且HTML中的错误报告已经被描述清楚,并且这些错误已经被成功解决,所以我轻松地进行了修正! - CodeToLife
7
当它说“修复Lint识别到的问题”,却没有显示出这些错误或报告路径时,这确实非常令人讨厌。 - user25
8
这应该是被接受的答案。禁用代码检查不是一个好的解决方案。 - slhddn
1
没有报告文件夹! - roghayeh hosseini
显示剩余9条评论

224

我曾遇到这个问题,并通过添加以下代码解决:

lintOptions { 

    checkReleaseBuilds false

}

android{ }部分中添加到我的build.gradle文件中。


13
关闭Lint不会对应用程序产生任何副作用。Lint是一种代码分析工具,这里提到的由设置debuggable属性引起的错误可以在build/outputs文件夹中的"lint-results-release-fatal.html"文件中详细查看。 - novas1r1
15
警告:这只是禁用了代码检查。最好在禁用之前至少查看一下错误。在我的情况下,这些错误与特定语言的某些缺失字符串有关。 点击“分析”->“检查代码..” - Markus
2
我不建议这样做。在我的情况下,忽略这些警告会导致由于缺少资源而在运行时崩溃。请查看lint-results-release-fatal.html并修复所有问题。 - Paweł Nadolski
lint-results-release-fatal.html 的路径为 app -> build -> reports - Lal
1
在我的情况下,它会出现白屏。-1 - Nijat Mursali
显示剩余4条评论

83

如果想找到准确的错误,请前往您的项目中以下路径:/app/build/reports/lint-results-release-fatal.html(或.xml)。最简单的方法是进入xml文件,它将显示错误的确切位置,包括其在Java类或XML文件中的位置。关闭lint检查不是一个好主意,因为它们是有原因存在的。相反,请转到:

    /app/build/reports/lint-results-release-fatal.html or 
    /app/build/reports/lint-results-release-fatal.xml

然后修复它。

Kotlin与众不同。首先,您需要在应用程序文件夹的build.gradle的Android部分中设置以下代码。

     android {
          :
          lintOptions {
            baseline(file("lint-baseline.xml"))
          }
      }

然后从IDE (Analyze > Inspect Code) 或者命令行中运行lint,方法如下。

      $ ./gradlew lintDebug

输出打印了lint-baseline.xml文件在app文件夹中的位置,但有时也可能在app/src文件夹中 /app/lint-baseline.xml


2
这比仅忽略错误并继续前进要好得多。而且HTML文件非常容易理解问题。 - John Pang
我在/app/build/reports/lint-results-release-fatal.xml中找到了问题。谢谢。 - Bukunmi
没有报告文件夹! - roghayeh hosseini
@roghayeh hossein 如果你在使用 Kotlin,你不会找到报告文件夹。有另一种方法可以找到你的 Lint 文件。我刚刚更新了我的答案,你可以回去查看一下。 - Yosidroid

51

请确保您在所有的 string.xml 文件中定义了所有的翻译内容。


43

如果你企图找出问题所在,我发现我的问题位于项目的以下路径中:/app/build/reports/lint-results-release-fatal.html(或.xml)。

希望这能帮到你!


7
对我来说,两个文件都是空的。 - m9m9m

38

在使用Android Studio创建签名APK时,我遇到了同样的问题。我只是在build.gradle文件中的android {}部分进行了一点修改。

lintOptions {
        checkReleaseBuilds false
        abortOnError false
    }

这对我有用。我遇到了类似的问题。 执行任务‘:app:lint***Release’失败。
org.picocontainer.MutablePicoContainer.registerComponentInstance(Ljava/lang/Object;)Lorg/picocontainer/ComponentAdapter;
- Nelson Ramirez

32

如何查找错误详细信息

分析 -> 检查代码

输入图像描述

然后在检查结果中你会看到一个错误

输入图像描述

在我的情况下,由于Google IAP中未解决的javadoc引用,构建失败了


4
这应该被接受为正确答案。对于那些建议关闭代码检查的人,这只是一个权宜之计。修复错误比跳过它更好。只有在非常特殊的情况下才应该跳过代码检查,而不是经常性地这样做。重申一遍,这应该很少甚至根本不应该这样做。 - Archie G. Quiñones

22
***Try this***

 buildTypes {
        release {
            lintOptions {
                disable 'MissingTranslation'
                checkReleaseBuilds false
                abortOnError false
            }
            minifyEnabled false
            signingConfig signingConfigs.release
        }
    }

18

您可以在gradle构建选项卡中选择汇编,以获取更多信息:enter image description here

编辑2022:

单击大象按钮后您可以运行:

gradle assembleDebug

5
这是实际答案:进入应用程序中的“组装”菜单,在Gradle窗口中双击运行它,Android Studio会告诉你确切的弹出内容。 - Wajid
1
哦,我的天啊...谢谢!那个帮我省了很多时间!:D - thinklinux
我获得了以下代码:lintOptions {     checkReleaseBuilds false     // 或者,如果您愿意,您可以继续检查发布构建中的错误,     // 但即使发现错误,也可以继续构建:     abortOnError false },我将其添加到代码中,但每次构建发布版本时都会收到相同错误。 - Oliver D

12

在您的 app.gradle 文件中尝试这三行代码。

android {
lintOptions {
    checkReleaseBuilds false
    // Or, if you prefer, you can continue to check for errors in release builds,
    // but continue the build even when errors are found:
    abortOnError false
}

@justColbs,也许你会遇到其他问题。请发布带有日志记录的问题,可能会有人能够为您提供正确的指导。 - Rehan Sarwar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接