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.