Lint 在组装发布目标时发现了致命错误

383/5000 我有一个应用程序,给我编译错误,当我把它改为释放模式上传到游戏商店

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

我还尝试了构建级别中的编译建议,它没有给出错误,但是当我尝试安装 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
113901 次浏览
  1. 您可以右键单击一个文件夹或文件,并使用 分析 > 检查代码菜单手动运行检查。 结果显示在 视学结果窗口中。这样您就可以查看和修复真正的问题。

  2. 您仍然可以从 应用程序构建报告 lint-result-release-dead. html文件中查看它们,而无需使用前面提到的手动检查菜单。

  3. 虽然不建议您像 Android Studio 建议的那样,通过在 建造,分级中添加以下代码来抑制 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
}
}

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

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

 /YOUR_APPLICATION/app/build/reports/

enter image description here

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

更多信息,你可以访问我找到解决方案的网页。

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

在这里,我写了一篇关于所有可能的 解决 Lint 发现的致命错误问题的解决方案的文章。

一般来说,你可以用以下方法解决:

Android 工作室显示所有的构建错误在 html & xml文件在以下链接出现。只要在浏览器中打开该文件,检查错误并修复它。

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

enter image description here

样本错误

enter image description here

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

对于我来说,我检查了在/APPATION/app/build/reports 中的 xml 和 html 文件中的错误 然后我修复了所有我能修复的,剩下的我通过添加到我的 build 中来抑制它们:

android {
lintOptions {
checkReleaseBuilds false
abortOnError false
}
}

由于剩余的错误,这阻止了 android 工作室中止构建

这对我有用

lintOptions {
checkReleaseBuilds false
}

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

过了一会儿,我找到了解决问题的办法。只需检查 strings.xml 之间的差异(如果有的话,针对不同的语言)

正如我所看到的,你正在尝试有一个捆绑或任何版本的新编辑的应用程序版本,但在这里你必须注意最小 sdk 和目标 sdk 和一些其他设置,在你的应用程序可能不同于上一个安卓工作室和播放商店的标准,所以你必须编辑他们,如果需要更改他们,但这些类型的错误位于一个文件在下面的日志或报告文件夹 它是基于 html 的,并尝试在浏览器中查看它 该文件位于项目的此目录中: 应用程序构建报告 试着用浏览器打开它,它会帮助你并按下阻止你生成加密签名的捆绑包或应用程序的按钮。

对我来说,结果文件 lint-definite-release.xml位于 app/build/intermediates/lint_vital_partial_results/release/out

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

我遇到了类似的问题,并按照这种方式使用 Analyze > Inspect Code

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

将其添加到 build.gradle (模块: AppName)

下面

android {

这些线

lintOptions{
checkReleaseBuilds false
}

在这些线之上

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

}

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

对于我来说,我发现了路径 app\build\intermediates\lint_vital_intermediate_text_report\release\lint-results-release.txt中提到的错误

注意,在下面的代码中将 Ture 改为 false 只是一种解决方法,并不能解决真正的问题,您可能会在生产中遇到麻烦。

android {
lintOptions {
heckReleaseBuilds true
abortOnError true
}

在我的情况下,Clint 报告位于: myproject\app\build\intermediates\lint_vital_intermediate_text_report\release