Lint hat beim Zusammenstellen eines Release-Ziels schwerwiegende Fehler festgestellt

74

383/5000 Ich habe eine App, die mir Kompilierungsfehler gibt, wenn ich sie in den Freigabemodus ändere, um sie in den Play Store hochzuladen

Ich habe versucht, Code zu analysieren und zu überprüfen, und ich habe keinen Fehler.

Ich habe auch versucht, den Kompilierungsvorschlag im Build-Build-Gradle zu erstellen, und er gibt keinen Fehler aus. Wenn ich jedoch versuche, die apk zu installieren, wird eine Fehlermeldung angezeigt: "Die APK konnte nicht installiert werden. Fehler: Fehlerzeichenfolge konnte nicht gestoppt werden."

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
Jesususo
quelle

Antworten:

142
  1. Sie können das Menü Analysieren> Code überprüfen verwenden , um Inspektionen manuell auszuführen. Die Ergebnisse werden im Fenster Inspektionsergebnisse angezeigt . Auf diese Weise können Sie die tatsächlichen Probleme anzeigen und beheben.

  2. Sie können sie weiterhin in der Datei app \ build \ reports \ lint-results-release-fatal.html anzeigen , ohne das oben genannte manuelle Inspektionsmenü zu verwenden.

  3. Obwohl dies nicht empfohlen wird, können Sie die Flusenwarnungen auch unterdrücken, indem Sie den folgenden Code in Ihr build.gradle einfügen, wie von Android Studio vorgeschlagen. Beachten Sie jedoch, dass dadurch keine wirklichen Probleme behoben werden.

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
    }
}
Santalu
quelle
26
Du bist ein Lebensretter. Analysieren -> Code überprüfen war das beste Werkzeug dafür.
J. Jefferson
13
Stimmen Sie überein. Es ist erstaunlich, dass selbst das neueste Android Studio keinen Link dazu hat, nachdem ein Build aufgrund von Flusen fehlgeschlagen ist. Es zeigt einfach einen Code-Ausschnitt, um die Fehler zu deaktivieren .... !!!?
BjörnW
1
Der letzte Teil dieser Antwort ist sehr wertvoll. Ich würde die Antwort so bearbeiten, dass "Analysieren -> Code überprüfen" an erster Stelle steht, damit die Leute es nicht verpassen. Der Teil über das Unterdrücken von Warnungen wird bereits von Android Studio angezeigt und sollte, wie Sie sagen, ein letzter Ausweg sein.
LarsH
1
@BjornW sicher sein, dass sie es in Zukunft beheben werden. Geben Sie ihnen einfach etwas Zeit, Sie können die einzige Spitze des Eisbergs der Arbeit sehen, Korrekturen und Verbesserungen, die sie in jeder Version vornehmen. Sie müssen jedes Jahr alle neuen APIs von Google einholen und die IDE weiter verbessern. Tatsächlich ist das Android Studio derzeit eine der besten IDEs auf dem Markt.
Kirill Karmazin
52

Details finden Sie in Ihrem App-Pfad

 /YOUR_APPLICATION/app/build/reports/ 

Geben Sie hier die Bildbeschreibung ein

In diesem Ordner befindet sich ein HTML-Dokument, das den Fehler beschreibt.

Für weitere Informationen können Sie die Seite besuchen, auf der ich eine Lösung finde.

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

Arda
quelle
2
Dies ist die richtige Lösung. Analysieren> Code überprüfen generiert zu viele Einträge, um den tatsächlichen Schuldigen zu finden.
Rammohan Raja
1
Vielen Dank für die Lösung ... Ich habe 10 Stunden gebraucht, um die Flusenwarnung nacheinander zu korrigieren und schließlich Ihre Lösung zu verwenden. Ich habe den genauen Grund für das Problem. Vielen Dank
Amit Sen
44

Hier habe ich einen Artikel über alle möglichen Lösungen zur Behebung des Problems mit schwerwiegenden Fehlern von Lint geschrieben .

Im Allgemeinen können Sie es folgendermaßen beheben:

Android Studio zeigt alle Build-Fehler in html& xmlfile unter dem folgenden Link an. Öffnen Sie einfach diese Datei in Ihrem Browser, überprüfen Sie den Fehler und beheben Sie ihn.

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

Geben Sie hier die Bildbeschreibung ein

Beispielfehler

Geben Sie hier die Bildbeschreibung ein

Asad Ali Choudhry
quelle
1
Toll!! Ich denke, dies ist der perfekte Weg , um es zu lösen.
Rahul Mishra
Diese Antwort ist wirklich hilfreich für mich, danke @Asad
Abhra
5

Stellen Sie sicher, dass Sie alle Übersetzungen in allen string.xml-Dateien in Ihrer Anwendung definiert haben.

kksal55
quelle
1

Für mich habe ich die Fehler in den XML- und HTML-Dateien in / APPLICATION / app / build / reports überprüft. Dann habe ich alles behoben, was ich beheben konnte, und im Übrigen habe ich sie unterdrückt, indem ich meinem build.gradle den folgenden Code hinzugefügt habe:

android {
    lintOptions {
        checkReleaseBuilds false
        abortOnError false
    }
}

Dies verhinderte, dass Android Studio den Build aufgrund der verbleibenden Fehler abbrach

3.Tagma
quelle
0

Es gibt zwei Möglichkeiten, dies zu lösen:

1 -> Gehen Sie zu Analysieren> Code überprüfen, lassen Sie den Code überprüfen und lösen Sie das Problem.

2 -> Gehen Sie zu Projektstruktur> App> Erstellen> Berichte. In Berichten finden Sie den Fehlerbericht. Öffnen Sie es in einem beliebigen Browser und sehen Sie den Fehler. Beheben Sie ihn dann.

Atul Yadav
quelle
-1

Das funktioniert bei mir

lintOptions { 
    checkReleaseBuilds false
}

Fügen Sie diesen Code in die Datei build.gradle im Abschnitt android {} ein

Talha Shahab
quelle
1
Ihre Antwort ist dieselbe wie eine andere Antwort.
Emi Raz vor
-2

File > Invalid Caches/Restarthat das Problem für mich behoben. Ich fange gerade erst mit Android an, aber ich dachte, ich sollte es versuchen, bevor ich versuche, was oben erwähnt wurde, und es hat funktioniert.

Aamir Shahzad
quelle