Błąd „: app: lintVitalRelease” podczas generowania podpisanego pliku APK


238

Próbowałem przesłać swoją aplikację w Google Play i napotkałem komunikat o błędzie: „Przesłałeś pakiet do debugowania. Ze względów bezpieczeństwa musisz wyłączyć debugowanie, zanim będzie można go opublikować w Google Play. Dowiedz się więcej o plikach do debugowania”.

Potem napisałem android:debuggable="false"w moim manifeście i spróbowałem ponownie. Wystąpił ten sam błąd, więc ustawiłem wariant kompilacji z mojego modułu na wydanie i spróbowałem ponownie wygenerować apk, ale tym razem ten błąd jest generowany:

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

38
Wszystkie odpowiedzi wydają się albo nie sprawdzać błędów, albo nie przerywać błędów, ale co ze znalezieniem problemu i jego naprawieniem? Android Studio nie pokazuje informacji o tym, co jest nie tak ... Czy ktoś mógł to naprawić bez ignorowania błędów?
— Federico Alvarez

stackoverflow.com/questions/43203415/... przejdź na tę stronę z odpowiedzią. jego praca dla mnie
— Halim Bezek

5
„ale co ze znalezieniem problemu i naprawieniem go ???” Myślałem tak samo, ale zawsze przeoczyłem zakładkę „Wyniki inspekcji” na dolnym pasku, a także zawartość folderu build \ report. Proszę sprawdzić.
— PravyNandas

1
folder kompilacji / raportu to bardzo dobra wskazówka. Dla mnie problemem było brak tłumaczenia i było to jasne z raportu HTML.
— Pete

na błąd Google daje rozwiązanie, dlaczego nie próbowałeś tego ???? najpierw spróbuj zrozumieć błąd, a także komunikat o błędzie
— Mafujul

Odpowiedzi:


393

Nie polecałbym wyłączania kontroli kłaczków, są tam z jakiegoś powodu. Zamiast tego sprawdź, na czym polega błąd i napraw go.

Raport o błędzie zostanie zapisany w [app module]/build/reports/lint-results-yourBuildName-fatal.html. Możesz otworzyć ten plik w przeglądarce, aby przeczytać o błędach.

Byłoby miło, gdyby Gradle mógł nieco wyjaśnić, gdzie generowany jest raport o błędzie.


8
Zgadzam się, o wiele lepiej jest poprawić błąd! Możliwe jest również wygenerowanie raportu ręcznie za gradlew lintpomocą lub za pomocą IDE, patrz developer.android.com/studio/write/lint
— Anigif

3
tak, właściwy kierunek. Ponadto raport błędów w tym HTML był dobrze opisany i błędy zostały naprawione, więc po prostu je poprawiłem!
— CodeToLife

6
tak, to jest bardzo denerwujące, gdy mówi, fix the issues identified by lintale tak naprawdę nie pokazuje tych błędów ani ścieżki do zgłoszenia ...
— użytkownik25

7
To musi być zaakceptowana odpowiedź. Wyłączenie kłaczków nie jest dobrym rozwiązaniem.
— slhddn

1
w moim przypadku wystąpił błąd MissingTranslation: Incomplete translation- pytanie do Google: dlaczego nie jest to widoczne w Android Studio? Nazywa się integrated development environmentto nie bez powodu.
— Ktoś gdzieś

187

Miałem ten problem i rozwiązałem go, dodając:

lintOptions { 

    checkReleaseBuilds false

}

do mojego build.gradlepliku w android{ }sekcji.       


To nie ma żadnych innych skutków ubocznych w aplikacji, prawda?
— zaangażowanieandroider

10
Nie, wyłączenie kłaczków nie spowoduje żadnych skutków ubocznych aplikacji. Lint to narzędzie do analizy kodu, a wspomniany tutaj błąd spowodowany ustawieniem właściwości debuggowalnej można szczegółowo obejrzeć w pliku „lint-results-release-fatal.html” w folderze build / output.
— error1337

Miałem problem z dodaniem sekcji {} systemu Android do mojego pliku build.grade najwyższego poziomu; postępowałem zgodnie z kilkoma innymi wskazówkami i dodałem to do mojego pliku build.grade na poziomie aplikacji, tj. o jeden folder dalej, gdzie sekcja Androida była już obecna.
— Martin Zaske

13
Ostrzeżenie: To po prostu wyłącza kontrole kłaczków. Lepiej byłoby przynajmniej przyjrzeć się błędom przed ich wyłączeniem. W moim przypadku chodziło o niektóre brakujące ciągi znaków dla określonych języków. Wciśnij „Analizuj” -> „Sprawdź kod ..”
— Markus

2
Nie polecam tego. W moim przypadku zignorowanie tych ostrzeżeń spowodowałoby awarie w czasie wykonywania spowodowane brakującymi zasobami. Przejrzyj lint-results-release-fatal.html i napraw wszystkie problemy.
— Paweł Nadolski

76

jeśli chcesz znaleźć dokładny błąd, przejdź do następującej ścieżki w swoim projekcie: /app/build/reports/lint-results-release-fatal.html(or .xml). Najłatwiejszym sposobem jest przejście do pliku xml, który pokaże dokładnie, jaki jest błąd, w tym jego pozycję w pliku klasy Java lub pliku XML. Wyłączenie kontroli kłaczków nie jest dobrym pomysłem, są tam z jakiegoś powodu. Zamiast tego przejdź do:

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

i napraw to.


2
Jest to o wiele lepsze niż ignorowanie błędów i przejście dalej. Plik HTML łatwo zrozumieć problem.
— John Pang

Znalazłem problem w /app/build/reports/lint-results-release-fatal.xml. dzięki
— Bukunmi

Oszczędzanie życia Problem rozwiązany dosłownie w kilka sekund po obejrzeniu pliku xml.
— Roman Rozenshtein

50

Upewnij się, że zdefiniowałeś wszystkie tłumaczenia we wszystkich string.xmlplikach


1
to był mój problem .... dodaj brakujące tłumaczenia napraw problem dzięki
— Hatem Badawi

Pracowało dla mnie brakowało niektórych tłumaczeń.
— Himanshu Rawat

40

W przypadku, gdy możesz spróbować zlokalizować problem, znalazłem mój w następującej ścieżce mojego projektu: /app/build/reports/lint-results-release-fatal.html (lub .xml).

Mam nadzieję że to pomoże!


oba są dla mnie puste.
— m9m9m

35

Napotkałem ten sam problem podczas tworzenia podpisanego pliku APK ze studia Android. Zmieniam tylko trochę zmian w pliku build.gradle w Androidzie {}

lintOptions {
        checkReleaseBuilds false
        abortOnError false
    }

To zadziałało dla mnie. Miałem podobny problem. Wykonanie nie powiodło się dla zadania „: app: lint *** Release”. > org.picocontainer.MutablePicoContainer.registerComponentInstance (Ljava / lang / Object;) Lorg / picocontainer / ComponentAdapter;
— Nelson Ramirez

24

Jak znaleźć szczegóły błędu

Anylyze -> Sprawdź kod

wprowadź opis zdjęcia tutaj

Następnie w wynikach kontroli zobaczysz błąd

wprowadź opis zdjęcia tutaj

W moim przypadku kompilacja nie powiodła się z powodu nierozwiązanego odwołania javadoc w Google IAP 😐


3
To powinna być zaakceptowana odpowiedź. Dla wszystkich osób, które zaproponowały wyłączenie sprawdzania kłaczków, jest to tylko obejście. Nadal lepiej jest naprawić błąd niż pominąć. Pomijanie kłaczków powinno być wykonywane tylko w bardzo szczególnych przypadkach, a nie przez cały czas. PONOWNIE, KTÓRE NALEŻY ZROBIĆ RZECZNIE LUB NAWET NIE.
— Archie G. Quiñones,

20
***Try this***

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

18

Możesz znaleźć więcej informacji wybierając montaż z zakładki budowania stopni:wprowadź opis zdjęcia tutaj


5
to jest właściwa odpowiedź, przejdź do montażu w aplikacji, w oknie stopni i uruchom go podwójnym kliknięciem, studio Android powie ci dokładnie, co wyskakuje.
— Wajid Ali,

1
O mój boże ... dzięki! Ten zaoszczędził mi dużo czasu! : D
— thinklinux

Mam 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 }i dodałem go, ale mam ten sam błąd za każdym razem, gdy buduję wydanie
— Oliver D

11

Wypróbuj te 3 linie w pliku 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 może napotkać inny problem. Opublikuj swój problem z log cat, może być ktoś, kto poprowadzi Cię poprawnie.
— Rehan Sarwar,

8

Moim problemem było brakujące tłumaczenie. Miałem settings.xml, który nie został przetłumaczony, ponieważ nie był potrzebny, więc musiałem dodać ciąg „translatable =" false ”:

Ten ciąg nie wymaga tłumaczenia


8

Cześć chłopaki, to działało dla mnie, po prostu modyfikuję moje typy BuildTyp w następujący sposób:

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

7

Znajdź przyczynę błędu tutaj i napraw ją.

yourProject/app/build/reports/lint-results-release-fatal.xml

1
powinieneś wiedzieć, jaki dokładnie błąd i potwierdzić ponownie. Dziękuję Ci.
— Asesha George,

Znalazłem TargetSdkVersion No Longer Supported: Google Play requires that apps target API level 26 or higher.w swoim dzienniku, tzn. Nie mogę ustawić targetSdkVersion25.
— Owoc

6

Moim problemem było brakujące tłumaczenie. Miałem settings.xml, który nie został przetłumaczony, ponieważ nie był potrzebny, więc musiałem dodać ciąg „translatable =" false ”:

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

4

Jak sugerowało wiele osób, zawsze lepiej jest spróbować naprawić błąd ze źródła. sprawdź plik wygenerowany przez kłaczki

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

przeczytaj plik, a zostaniesz poprowadzony do źródła błędu. Sprawdź mój: błąd pochodzi z niewłaściwego ograniczenia widoku.


4

Rozwiąż ten problem Korzystanie z tego w pliku build.gradle (aplikacja) Wewnątrz głównego Androida {inside}

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

3

Wypróbuj poniższy kod

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

3

wprowadź opis zdjęcia tutaj

Dodaj to w systemie Android {} build.gradle (moduł: aplikacja)

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
}

2

Windows -> referencje -> Android-> sprawdzanie błędów kłaczków.

odznacz Uruchom pełny błąd .......

wprowadź opis zdjęcia tutaj


1
Bardzo ładnie, ale skąd to okno? Nie mogłem go znaleźć w Android Studio ...
— Martin Zaske

2

Idź do build.gradle (moduł: aplikacja)

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
}


0

Należy dodać kod w pliku stopni na poziomie projektu, aby wygenerować nadpisywanie apk przez błędy


0

W moim przypadku problem dotyczył minimalnego docelowego poziomu API wymaganego przez Google Play. Został ustawiony mniej niż 26.

Problem zniknął, gdy ustawiłem minimalny docelowy poziom interfejsu API na 26.



-2

Jeśli dodasz app.gradle pod Androidem {

lintOptions {

    quiet true
    abortOnError false
}

}

Dostanie pracę


Myślę, że lepiej jest naprawić kłaczki i błędy, jeśli to możliwe, zamiast pomijać sprawdzanie
— Piero
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.