': app: lintVitalRelease' Fehler beim Generieren einer signierten apk

236

Ich habe versucht, meine Apk auf Google Play hochzuladen, und es ist eine Fehlermeldung aufgetreten: "Sie haben eine debuggbare APK hochgeladen. Aus Sicherheitsgründen müssen Sie das Debuggen deaktivieren, bevor es in Google Play veröffentlicht werden kann. Weitere Informationen zu debuggbaren APKs."

Dann schrieb ich android:debuggable="false"in mein Manifest und versuchte es erneut. Ich habe den gleichen Fehler festgestellt, daher habe ich die Build-Variante von meinem Modul auf "Freigeben" gesetzt und erneut versucht, eine Apk zu generieren. Diesmal wird jedoch dieser Fehler generiert:

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
      }
  }
  ...
user3716366
quelle
38
Alle Antworten scheinen entweder nicht auf Fehler zu prüfen oder Fehler nicht abzubrechen, aber wie wäre es, das Problem zu finden und es zu beheben? Android Studio zeigt keine Informationen darüber an, was falsch ist ... Hat jemand dies beheben können, ohne Fehler zu ignorieren?
Federico Alvarez
stackoverflow.com/questions/43203415/… gehen Sie auf diese Seite für die Antwort. seine Arbeit für mich
Halim Bezek
5
"aber was ist mit dem Finden und Beheben des Problems ???" Ich dachte das Gleiche, aber ich habe immer die Registerkarte "Prüfergebnisse" in der unteren Leiste übersehen und auch den Inhalt des Ordners "Build \ Report" erstellt. Bitte prüfen.
PravyNandas
1
Der Build / Report-Ordner ist ein sehr guter Tipp. Für mich fehlten Übersetzungen, und das ging aus dem HTML-Bericht hervor.
Pete
auf den Fehler Google geben Sie die Lösung, warum haben Sie dies nicht versucht ???? Versuchen Sie zunächst, den Fehler sowie die Fehlermeldung zu verstehen
Mafujul

Antworten:

391

Ich würde nicht empfehlen, die Flusenprüfungen auszuschalten, sie sind aus einem bestimmten Grund da. Überprüfen Sie stattdessen den Fehler und beheben Sie ihn.

Der Fehlerbericht wird in gespeichert [app module]/build/reports/lint-results-yourBuildName-fatal.html. Sie können diese Datei in einem Browser öffnen, um Informationen zu den Fehlern zu erhalten.

Es wäre schön, wenn Gradle etwas klarer machen könnte, wo der Fehlerbericht generiert wird.

Graydyn Young
quelle
8
Stimmen Sie zu, es ist viel besser, den Fehler zu korrigieren! Es ist auch möglich, den Bericht manuell mit gradlew lintoder über eine IDE zu generieren , siehe developer.android.com/studio/write/lint
Anigif
3
Ja, richtige Richtung. Außerdem wurde der Fehlerbericht in diesem HTML gut beschrieben und die Fehler wurden in Ordnung behoben, so dass ich sie einfach mit Leichtigkeit korrigierte!
CodeToLife
6
Ja, es ist sehr ärgerlich, wenn es heißt, fix the issues identified by lintaber diese Fehler oder den zu
meldenden
7
Dies muss die akzeptierte Antwort sein. Das Deaktivieren von Flusen ist keine gute Lösung.
Slhddn
1
in meinem Fall war der Fehler MissingTranslation: Incomplete translation- Frage an Google: Warum wird dies nicht in Android Studio angezeigt? Es heißt a integrated development environmentaus einem Grund.
Jemand irgendwo
186

Ich hatte dieses Problem und löste es durch Hinzufügen von:

lintOptions { 

    checkReleaseBuilds false

}

zu meiner build.gradleDatei innerhalb des android{ }Abschnitts.       

nail
quelle
Dies hat keine weiteren Nebenwirkungen auf die Anwendung, oder?
committedandroider
10
Nein, das Ausschalten von Flusen verursacht keine Nebenwirkungen auf die Anwendung. Lint ist ein Code-Analyse-Tool, und der hier erwähnte Fehler, der durch das Festlegen der debuggable-Eigenschaft verursacht wird, kann in der Datei "lint-results-release-fatal.html" im Ordner build / output detailliert angezeigt werden.
error1337
Ich hatte Probleme beim Hinzufügen eines Android {} - Abschnitts zu meiner build.grade-Datei der obersten Ebene. Befolgen Sie daher einige andere Ratschläge und fügen Sie diese meiner build.grade-Datei auf der Ebene der App hinzu, dh einen Ordner weiter unten, in dem der Android-Bereich bereits vorhanden war.
Martin Zaske
13
Warnung: Dadurch werden die Flusenprüfungen einfach deaktiviert. Es ist besser, sich zumindest die Fehler anzusehen, bevor Sie sie deaktivieren. In meinem Fall handelte es sich um einige fehlende Zeichenfolgen für bestimmte Sprachen. Klicken Sie auf "Analysieren" -> "Code überprüfen .."
Markus
2
Ich empfehle das nicht. In meinem Fall würde das Ignorieren dieser Warnungen zur Laufzeit zu Abstürzen führen, die durch fehlende Ressourcen verursacht werden. Bitte überprüfen Sie lint-results-release-fatal.html und beheben Sie alle Probleme.
Paweł Nadolski
75

Wenn Sie den genauen Fehler herausfinden möchten, gehen Sie in Ihrem Projekt zum folgenden Pfad: /app/build/reports/lint-results-release-fatal.html (oder .xml). Der einfachste Weg ist, wenn Sie zur XML-Datei gehen, sie zeigt Ihnen genau, was der Fehler ist, einschließlich der Position des Fehlers in Ihrer Java-Klasse oder XML-Datei. Das Ausschalten der Flusenprüfungen ist keine gute Idee, sie sind aus einem bestimmten Grund da. Gehen Sie stattdessen zu:

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

und reparieren Sie es.

Josi
quelle
1
Dies ist viel besser, als nur die Fehler zu ignorieren und fortzufahren. Und die HTML-Datei ist so einfach, das Problem zu verstehen.
John Pang
Ich habe das Problem in /app/build/reports/lint-results-release-fatal.xml gefunden. danke
Bukunmi
Lebensretter. Problem in buchstäblich Sekunden nach dem Betrachten der XML-Datei gelöst.
Roman Rozenshtein
50

Stellen Sie sicher, dass Sie alle Übersetzungen in allen string.xmlDateien definiert haben

Roberto
quelle
1
das war mein Problem .... fehlende Übersetzungen hinzufügen das Problem beheben danke
Hatem Badawi
Bei mir fehlten einige Übersetzungen.
Himanshu Rawat
40

Für den Fall, dass Sie versuchen, das Problem zu finden, habe ich es im folgenden Pfad meines Projekts gefunden: /app/build/reports/lint-results-release-fatal.html (oder .xml).

Hoffe das hilft!

Pecolyte Wang
quelle
Beide Dateien sind für mich leer.
m9m9m
35

Ich habe das gleiche Problem beim Erstellen von signierten apk aus Android Studio konfrontiert. Ich ändere nur ein wenig an der build.gradle- Datei in android {}

lintOptions {
        checkReleaseBuilds false
        abortOnError false
    }
Dhruv Raval
quelle
Das hat bei mir funktioniert. Ich hatte ein ähnliches Problem. Ausführung für Aufgabe ': app: lint *** Release' fehlgeschlagen. > org.picocontainer.MutablePicoContainer.registerComponentInstance (Ljava / lang / Object;) Lorg / picocontainer / ComponentAdapter;
Nelson Ramirez
24

So finden Sie Fehlerdetails

Anylyze -> Code überprüfen

Geben Sie hier die Bildbeschreibung ein

Dann sehen Sie in den Prüfergebnissen einen Fehler

Geben Sie hier die Bildbeschreibung ein

In meinem Fall schlug die Erstellung aufgrund einer ungelösten Javadoc-Referenz in Google IAP fehl

Mikhail
quelle
3
Dies sollte die akzeptierte Antwort sein. Für alle Leute, die vorgeschlagen haben, die Flusenprüfung zu deaktivieren, ist das nur eine Lösung. Es ist immer noch besser, den Fehler zu beheben, als ihn zu überspringen. Das Überspringen von Flusenprüfungen sollte nur in ganz bestimmten Fällen und nicht immer durchgeführt werden. WIEDER, DAS SOLLTE SELTEN ODER AUCH NICHT GEMACHT WERDEN.
Archie G. Quiñones
20
***Try this***

 buildTypes {
        release {
            lintOptions {
                disable 'MissingTranslation'
                checkReleaseBuilds false
                abortOnError false
            }
            minifyEnabled false
            signingConfig signingConfigs.release
        }
    }
Amit Raj
quelle
18

Weitere Informationen zur Auswahl von Assemble finden Sie auf der Registerkarte Gradle Build:Geben Sie hier die Bildbeschreibung ein

Mateusz Kaflowski
quelle
5
Dies ist die eigentliche Antwort. Gehen Sie zur Zusammenstellung in der App, im Gradle-Fenster und führen Sie sie durch Doppelklick aus. Android Studio sagt Ihnen genau, was es ausgelöst hat.
Wajid Ali
1
Oh mein Gott ... danke! Das hat mir viel Zeit gespart! : D
thinklinux
Ich habe, 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 }und ich habe es hinzugefügt, aber ich habe den gleichen Fehler in jedem Mal, wenn ich eine Veröffentlichung baue
Oliver D
11

Probieren Sie diese 3 Zeilen in Ihrer app.gradle-Datei aus.

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
}
Rehan Sarwar
quelle
@justColbs könnte sein, dass Sie vor einem anderen Problem stehen. Veröffentlichen Sie Ihr Problem mit Log Cat möglicherweise eine Anleitung, die Sie richtig führt.
Rehan Sarwar
8

Mein Problem war eine fehlende Übersetzung. Ich hatte eine settings.xml, die nicht übersetzt wurde, da sie nicht benötigt wurde, also musste ich den Zeichenfolgen "translatable =" false "hinzufügen:

Diese Zeichenfolge muss nicht übersetzt werden

Harter Masand
quelle
8

Hallo Leute, das hat bei mir funktioniert. Ich ändere meine BuildTypes einfach so:

buildTypes {
        release {
            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
                }
            }
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
DoctorDroid Haiti
quelle
7

Finden Sie einfach den Fehlergrund hier und beheben Sie ihn.

yourProject/app/build/reports/lint-results-release-fatal.xml
Amir Hossein Ghasemi
quelle
1
Sie sollten wissen, was genau Fehler und erneut zertifizieren. Danke.
Asesha George
Ich habe TargetSdkVersion No Longer Supported: Google Play requires that apps target API level 26 or higher.in meinem Log gefunden, dh kann nicht targetSdkVersion25 setzen .
Obst
6

Mein Problem war eine fehlende Übersetzung. Ich hatte eine settings.xml, die nicht übersetzt wurde, da sie nicht benötigt wurde, also musste ich den Zeichenfolgen "translatable =" false "hinzufügen:

<string translatable="false" name="stringname">This string doesn't need translation</string>
tomDev
quelle
4

Wie viele Leute vorgeschlagen haben, ist es immer besser, den Fehler aus der Quelle zu beheben. Überprüfen Sie die fusselförmige Datei

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

Lesen Sie die Datei und Sie werden dahin geführt, woher der Fehler kommt. Schauen Sie sich meine an: Der Fehler ist auf eine falsche Ansichtsbeschränkung zurückzuführen.

Quwaysim
quelle
4

Lösen Sie dieses Problem, indem Sie dies in der Datei build.gradle (app) Inside main Android {inside} verwenden.

  buildTypes {
      //  crunchPngs false // or true   when png error
        release {
            lintOptions {
                checkReleaseBuilds false
                abortOnError false
            }
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
Keshav Gera
quelle
3

Versuchen Sie es mit dem folgenden Code

buildTypes {
    release {
        lintOptions {
            disable 'MissingTranslation'
            checkReleaseBuilds false
            abortOnError false
        }
        minifyEnabled false
        signingConfig signingConfigs.release
    }
}
Scheich Ahmed Qureshi
quelle
3

Geben Sie hier die Bildbeschreibung ein

Fügen Sie dies in Android {} build.gradle (Modul: App)

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
}
Panneerchelvam Piratheepan
quelle
2

Windows -> Referenzen -> Android-> Flusenfehlerprüfung.

un tick Vollständigen Fehler ausführen .......

Geben Sie hier die Bildbeschreibung ein

jemand
quelle
1
Sehr hübsch, aber woher kommt dieses Fenster bitte? Ich konnte es nicht in Android Studio finden ...
Martin Zaske
2

Gehen Sie zu build.gradle (Modul: App)

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
}
Kaiffi
quelle
1

Entfernen Sie diese Aussage vollständig aus Ihrem Manifest. Eclipse erledigt dies für Sie im laufenden Betrieb.

Eran Goldin
quelle
0

Sie sollten den Code in die Gradle-Datei auf Projektebene einfügen, um das Überschreiben von Apk-Fehlern zu generieren

Kamal
quelle
0

In meinem Fall hing das Problem mit der Mindestziel-API-Stufe zusammen, die von Google Play benötigt wird. Es wurde weniger als 26 eingestellt.

Das Problem ist verschwunden, als ich die minimale Ziel-API-Stufe auf 26 festgelegt habe.

mdicosimo
quelle
0
    lintOptions {
      checkReleaseBuilds false
      abortOnError false
    }

Der obige Code kann das Problem beheben, indem er ignoriert wird. Er kann jedoch auch zum Absturz der App führen.

Die gute Antwort finden Sie im folgenden Link:

Fehler beim Generieren der signierten apk

Josi
quelle
-2

Wenn Sie in app.gradle unter Android hinzufügen {

lintOptions {

    quiet true
    abortOnError false
}

}}

Es wird Arbeit bekommen

Alpesh Sorathiya
quelle
Ich denke, es ist besser, Lints und Fehler zu beheben, wenn möglich, als die Prüfung zu überspringen
Piero