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
      }
  }
  ...
użytkownik3716366
źródło
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.

Graydyn Young
źródło
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.       

przybity
źródło
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.

Josi
źródło
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

Roberto
źródło
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!

Pecolyte Wang
źródło
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
    }
Dhruv Raval
źródło
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 😐

Michaił
źródło
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
        }
    }
Amit raj
źródło
18

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

Mateusz Kafłowski
źródło
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
}
Rehan Sarwar
źródło
@ 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

Surowy Masand
źródło
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'
        }
    }
DoctorDroid Haiti
źródło
7

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

yourProject/app/build/reports/lint-results-release-fatal.xml
Amir Hossein Ghasemi
źródło
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>
tomDev
źródło
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.

Quwaysim
źródło
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'
        }
    }
Keshav Gera
źródło
3

Wypróbuj poniższy kod

buildTypes {
    release {
        lintOptions {
            disable 'MissingTranslation'
            checkReleaseBuilds false
            abortOnError false
        }
        minifyEnabled false
        signingConfig signingConfigs.release
    }
}
Szejk Ahmed Qureshi
źródło
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
}
Panneerchelvam Piratheepan
źródło
2

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

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

wprowadź opis zdjęcia tutaj

ktoś
źródło
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
}
Kaiffi
źródło
1

Usuń to stwierdzenie ze swojego manifestu, Eclipse zajmie się nim w locie.

Eran Goldin
źródło
0

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

Kamal
źródło
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.

mdicosimo
źródło
0
    lintOptions {
      checkReleaseBuilds false
      abortOnError false
    }

Powyższy kod może rozwiązać problem, ignorując go, ale może również spowodować awarię aplikacji.

Dobra odpowiedź znajduje się w następującym linku:

Błąd podczas generowania podpisanego pliku APK

Josi
źródło
-2

Jeśli dodasz app.gradle pod Androidem {

lintOptions {

    quiet true
    abortOnError false
}

}

Dostanie pracę

Alpesh Sorathiya
źródło
Myślę, że lepiej jest naprawić kłaczki i błędy, jeśli to możliwe, zamiast pomijać sprawdzanie
Piero