【问题标题】:Lint found fatal errors while assembling a release targetLint 在组装发布目标时发现致命错误
【发布时间】:2018-06-07 11:24:02
【问题描述】:

383/5000 我有一个应用程序,当我将其更改为发布模式以将其上传到 Play 商店时会出现编译错误

我尝试过分析检查代码 我没有任何错误。

我也尝试了 build build gradle 中的编译建议,它没有给出错误,但是当我尝试安装 apk 时,它给了我一个错误:“APK 安装失败。错误:无法停止错误字符串”

org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:lintVitalRelease'.
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:100)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70)
    at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
    at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:62)
    at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
    at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:60)
    at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:97)
    at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:87)
    at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:52)
    at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
    at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
    at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
    at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:248)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:241)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:230)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:123)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:79)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:104)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:98)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:626)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:581)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:98)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
    at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
    at java.lang.Thread.run(Thread.java:745)
Caused by: org.gradle.api.GradleException: 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
    }
}
...
    at com.android.tools.lint.gradle.LintGradleExecution.abort(LintGradleExecution.java:199)
    at com.android.tools.lint.gradle.LintGradleExecution.runLint(LintGradleExecution.java:263)
    at com.android.tools.lint.gradle.LintGradleExecution.lintSingleVariant(LintGradleExecution.java:359)
    at com.android.tools.lint.gradle.LintGradleExecution.analyze(LintGradleExecution.java:93)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.android.tools.lint.gradle.api.ReflectiveLintRunner.runLint(ReflectiveLintRunner.kt:38)
    at com.android.build.gradle.tasks.LintBaseTask.runLint(LintBaseTask.java:87)
    at com.android.build.gradle.tasks.LintPerVariantTask.lint(LintPerVariantTask.java:41)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
    at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:46)
    at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39)
    at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26)
    at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:780)
    at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:747)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:121)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:110)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:92)
    ... 32 more

【问题讨论】:

    标签: android android-studio


    【解决方案1】:
    1. 您可以使用Analyze > Inspect Code 菜单手动运行检查。 结果显示在 Inspection Results 窗口中。这样您就可以查看并解决实际问题。

    2. 您仍然可以从 app\build\reports\lint-results-release-fatal.html 文件中查看它们,而无需使用上述手动检查菜单。

    3. 虽然不建议您也可以按照 Android Studio 的建议,通过将以下代码添加到 build.gradle 中来抑制 lint 警告。 但请记住,这不会解决任何实际问题。

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

    【讨论】:

    • 你是救生员。分析 -> 检查代码是最好的工具。
    • 同意。令人惊讶的是,即使是最新的 Android Studio 在由于 lint 导致构建失败后也没有指向此链接,它只是显示一个代码 sn-p 来禁用错误.... !!!?
    • @BjornW 确保他们将来会修复它。只要给他们一些时间,您就可以看到他们在每个版本中所做的工作、修复和改进的唯一冰山一角。他们每年都必须赶上 Google 的所有新 API,并不断改进 IDE。实际上,Android Studio 目前是最好的 IDE 之一。
    • @Kirill 对你没什么不利的,但这位老人喜欢牛奶。修复这个简单的 lint 规则需要多少年时间?
    • 我的 Android Studio 中没有 `app\build\reports` 文件夹,可能他们在北极狐 2020.3.1 中更改了路径?
    【解决方案2】:

    您可以在您的应用路径中找到详细信息

     /YOUR_APPLICATION/app/build/reports/ 
    

    在此文件夹中,有一个描述错误的 HTML 文档。

    有关更多信息,您可以访问我找到解决方案的页面。

    https://dominoc925.blogspot.com/2018/08/how-to-find-cause-of-lint-error-while.html

    【讨论】:

    • 这是正确的解决方案。分析 > 检查代码生成的条目太多,无法找到真正的罪魁祸首。
    • 感谢您的解决方案...我花了 10 个小时来一一纠正 lint 警告,最后使用您的解决方案。我得到了问题背后的确切原因。非常感谢
    • 我的 Android Studio 中没有 `app\build\reports` 文件夹,可能他们在北极狐 2020.3.1 中更改了路径?
    • @rubo77 我也用2020.3.1,还是找到了文件。
    • @Arda 也许你使用 Windows?我使用 Linux
    【解决方案3】:

    这里我写了一篇关于所有可能的solutions to resolve Lint found fatal errors issue的文章。

    一般可以通过以下方式解决:

    Android Studio 在以下链接中显示 htmlxml 文件中的所有构建错误。只需在浏览器中打开该文件,检查错误并修复它。

    /YOUR_APPLICATION/app/build/reports/lint-results-release-fatal.html
    

    样本错误

    【讨论】:

    • 太棒了!!我认为这是解决它的完美方式
    • 这个答案对我真的很有帮助,谢谢@Asad
    • 我的 Android Studio 中没有 `app\build\reports` 文件夹,可能他们在北极狐 2020.3.1 中更改了路径?
    【解决方案4】:

    这对我有用

    lintOptions { 
        checkReleaseBuilds false
    }
    

    将此代码添加到 android {} 部分的 build.gradle 文件中

    【讨论】:

    • 您的答案与另一个答案相同。
    • 不推荐,最好通过Analyze > Inspect Code找到错误并修复
    • 感谢您的回答。
    • 当你没有时间解决方案时
    【解决方案5】:

    确保您在应用程序的所有 string.xml 文件中定义了所有翻译。

    【讨论】:

      【解决方案6】:

      对我来说,我检查了 /APPLICATION/app/build/reports 中的 xml 和 html 文件中的错误 然后我修复了所有我可以修复的问题,其余的我通过将以下代码添加到我的 build.gradle 来抑制它们:

      android {
          lintOptions {
              checkReleaseBuilds false
              abortOnError false
          }
      }
      

      这阻止了 android studio 由于剩余的错误而中止构建

      【讨论】:

        【解决方案7】:

        我遇到了类似的问题并按照这种方式Analyze > Inspect Code。就我而言,这是 xml 问题。

        【讨论】:

          【解决方案8】:

          对我来说,结果文件lint-definite-release.xml 位于app/build/intermediates/lint_vital_partial_results/release/out。我正在使用 Android Studio 2020.3.1 补丁 4。

          【讨论】:

            【解决方案9】:

            一段时间后,我找到了解决问题的方法。只需检查 strings.xml 之间的差异(对于不同的语言 - 如果有的话)

            【讨论】:

              【解决方案10】:

              将此添加到 build.gradle(Module: AppName)

              下面

              android {
              

              这些行

              lintOptions{
                  checkReleaseBuilds false
              }
              

              在这几行之上

              compileSdkVersion 31
              defaultConfig {
                  applicationId "com.example.myapplication"
                  minSdkVersion 21
                  targetSdkVersion 31
                  versionCode 1
                  versionName "1.0"
                  multiDexEnabled true
              }
              

              }

              【讨论】:

                【解决方案11】:

                正如我所见,您正在尝试为新编辑的应用程序提供捆绑包或任何类型的版本,但在这里您必须注意应用程序中的 minimumsdk 和目标 sdk 以及其他一些设置,这些设置可能与最后一个 android studio 和 play store 标准,所以你必须编辑它们,如果需要更改它们,但这些错误位于以下日志或报告文件夹中的文件中 它是 html 基础并尝试在浏览器中查看它 该文件位于项目的此目录中: 应用\构建\报告 尝试通过浏览器打开它,它将帮助您并按下阻止您生成带有加密签名的捆绑包或应用程序的原因。

                【讨论】:

                • 请对您的回答进行详细解释,以便下一位用户更好地理解您的回答。
                【解决方案12】:

                我遇到了同样的问题,并按照这种方式查找错误并修复它。分析 > 检查代码。之后我发现不支持当前的targetSdkVersion。所以我在默认配置中增加了targetSdkVersion,这就是它的修复方式。

                【讨论】:

                  【解决方案13】:

                  我知道这个帖子已经给出了很多答案,这是给那些想知道这个问题的人的。由于 XML/Layout/Resource 文件错误,一般会弹出此错误。
                  要解决此问题,只需通过手动或上述答案中提到的方法重新检查您的布局
                  我相信你会找到原因的......

                  【讨论】:

                    【解决方案14】:

                    我在生成 Apk 过程中遇到了同样的问题。这个显示错误的过程在新版本的 gradle 中得到了改进。我将我的 gradle 版本更新到最后一个版本,然后再次生成它。它以最好的方式在我的 Xml 代码中显示了致命错误。

                    【讨论】:

                      【解决方案15】:

                      File > Invalid Caches/Restart 为我解决了这个问题。 我刚刚开始使用 Android,但我想在尝试上面提到的之前先尝试一下,它确实有效。

                      【讨论】:

                        猜你喜欢
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 2022-10-13
                        • 2014-10-16
                        相关资源
                        最近更新 更多