Co to jest INSTALL PARSE FAILED brak błędu certyfikatów?

Próbowałem zmienić moją domyślną aktywność/main / startup (jak to się nazywa), edytując plik androidmanifest.xml. Wszystko, co zrobiłem, to zmiana android:name nieruchomości. jednak to całkowicie złamał całą aplikację. kiedy próbuję zainstalować, to się nie powiedzie i czyta.

W tym celu prosimy o zapoznanie się z naszą polityką prywatności.]}

Kiedy próbowałem go zmienić z powrotem do poprzedniego stanu, wciąż dawał mi ten sam błąd... Co ja zrobiłem?

Author: Ronan Boiteau, 2010-05-26

15 answers

Czy edytowałeś AndroidManifest.xml bezpośrednio w pliku .apk? Jeśli tak, to nie zadziała.

Każdy Android .apk musi być podpisany, jeśli ma być zainstalowany na telefonie , nawet jeśli nie instalujesz za pośrednictwem rynku. Narzędzia programistyczne działają wokół tego poprzez podpisanie certyfikatu rozwoju, ale {[1] } jest nadal podpisany.

Jednym z zastosowań jest to, aby urządzenie mogło stwierdzić, czy {[1] } jest poprawną aktualizacją zainstalowanej aplikacji, ponieważ jeśli jest to certyfikat będzie bądź taki sam.

Więc jeśli w ogóle wprowadzisz jakieś zmiany w aplikacji, musisz odbudować .apk, aby została poprawnie podpisana.

 43
Author: Dave Webb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-09 11:47:45

Odkryłem, że ten błąd może teraz wystąpić również przy użyciu niewłaściwej konfiguracji podpisywania. Jak opisano tutaj, Android 7.0 wprowadza nowy schemat podpisu, V2 . Schemat V2 oznacza cały APK, a nie tylko JAR, jak to ma miejsce w schemacie V1. Jeśli podpiszesz tylko V2 i spróbujesz zainstalować program docelowy przed 7.0, pojawi się ten błąd, ponieważ same słoiki nie są podpisane, a Pakiet Pre-7.0 PackageManager nie może wykryć obecności pakietu APK V2 podpis.

Aby być kompatybilnym ze wszystkimi systemami docelowymi, upewnij się, że APK jest podpisany z obu systemów, zaznaczając oba pola wersji podpisu w oknie dialogowym Android Studio Generuj podpisany APK , Jak pokazano tutaj:

Tutaj wpisz opis obrazka

Jeśli przewidywane są tylko cele 7.0, nie ma potrzeby dołączania sygnatury V1.

 112
Author: Paul Ratazzi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-29 15:34:40

Odkryłem, że jest to spowodowane przez moją wersję JDK.

Miałem ten problem z "ant" i to z powodu tej ostrożności wymienionej w dokumentacji:

Http://developer.android.com/guide/publishing/app-signing.html#signapp

Uwaga: od JDK 7 domyślny algorytm podpisywania uległ zmianie, wymagając podania algorytmów podpisywania i digestowania (- sigalg i-digestalg) podczas podpisywania APK.

Mam JDK 7. W mojej mrówce log, użyłem -v dla verbose i pokazało
$ ant -Dadb.device.arg=-d -v release install
[signjar] Executing 'C:\Program Files\Java\jdk1.7.0_03\bin\jarsigner.exe' with arguments:
[signjar] '-keystore'
[signjar] 'C:\cygwin\home\Chloe\pairfinder\release.keystore'
[signjar] '-signedjar'
[signjar] 'C:\cygwin\home\Chloe\pairfinder\bin\PairFinder-release-unaligned.apk'
[signjar] 'C:\cygwin\home\Chloe\pairfinder\bin\PairFinder-release-unsigned.apk'
[signjar] 'mykey'
 [exec]     pkg: /data/local/tmp/PairFinder-release.apk
 [exec] Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]

Podpisałem słoik ręcznie i zipaligned go, ale dał nieco inny błąd:

$ "$JAVA_HOME"/bin/jarsigner -sigalg MD5withRSA -digestalg SHA1 -keystore release.keystore -signedjar bin/PairFinder-release-unaligned.apk bin/PairFinder-release-unsigned.apk mykey
$ zipalign -v -f 4 bin/PairFinder-release-unaligned.apk bin/PairFinder-release.apk
$ adb -d install -r bin/PairFinder-release.apk
        pkg: /data/local/tmp/PairFinder-release.apk
Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]
641 KB/s (52620 bytes in 0.080s)
Znalazłem odpowiedź tutaj.

Jak radzić sobie z INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES bez deinstalacji

Potrzebowałem tylko go odinstalować, a potem zadziałało!

$ adb -d uninstall com.kizbit.pairfinder
Success
$ adb -d install -r bin/PairFinder-release.apk
        pkg: /data/local/tmp/PairFinder-release.apk
Success
641 KB/s (52620 bytes in 0.080s)

Teraz muszę tylko zmodyfikować kompilację.xml, aby używać tych opcji podczas podpisywania!

Ok oto jest: C:\Program Files \ Java \ android-sdk \ tools\ant\build.xml

            <signjar
                    sigalg="MD5withRSA"
                    digestalg="SHA1"
                    jar="${out.packaged.file}"
                    signedjar="${out.unaligned.file}"
                    keystore="${key.store}"
                    storepass="${key.store.password}"
                    alias="${key.alias}"
                    keypass="${key.alias.password}"
                    verbose="${verbose}" />
 51
Author: Chloe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:18:30

Rozwiązane (dla mnie) użycie w keytool args

-sigalg MD5withRSA -keyalg RSA -keysize 1024

I używanie w jarsignerze

-sigalg MD5withRSA -digestalg SHA1

Rozwiązanie Znalezione w

Jakie pułapki istnieją dla podpisywania APK Androida?

 15
Author: Alejadro Xalabarder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:26:34

W większości przypadków rozwiązanie tego błędu jest naprawdę proste:

  1. Odinstaluj swój apk
  2. Wyczyść swój projekt Androida
  3. Zbuduj swój projekt Androida
  4. zainstaluj / Uruchom swój apk
 6
Author: JanCor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-23 15:48:26

Jest to brzydkie, ale szybkie rozwiązanie: użyj JDK 6 zamiast 7.

Po przeczytaniu odpowiedzi odinstalowałem JDK 7 (nie potrzebuję go obecnie) i zainstalowałem JDK 6. To naprawiło. Lepszym rozwiązaniem byłoby użycie przez ant JDK 6 (bez odinstalowywania 7). Być może możliwa zmiana / ustawienie tej właściwości:

Java.biblioteka.ścieżka

In local.Plik Właściwości. Znajduje się w katalogu projektu (root).

Android i tak nie działa z JDK 7 (tylko 6 lub 5), więc zrób to skrypt ant używa również JDK 6 lub 5 jest prawdopodobnie dobrym rozwiązaniem.

 5
Author: Ixx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-11 11:48:53

W moim przypadku, mogłem budować i uruchamiać release buildy, ale otrzymałem błąd INSTALL_PARSE_FAILED_NO_CERTIFICATES podczas próby tworzenia debugera.

Rozwiązaniem było usunięcie mojego pliku debug.keystore i pozwolić ADT odtworzyć go. Najwyraźniej wygasła.

Lepszym rozwiązaniem długoterminowym jest jawne utworzenie debug.keystore, które nie wygasa po roku, zamiast pozwolić ADT go utworzyć. Oto polecenie, aby to zrobić:

keytool -genkey -v -keystore debug.keystore -alias androiddebugkey -storepass android -keypass android -keyalg RSA -validity 14000

Po wyświetleniu monitu wprowadź następujące wartości:

  • imię i nazwisko: Android Debug
  • jednostka organizacyjna: Android
  • Nazwa organizacji: nieznana
  • miasto lub miejscowość: nieznane
  • Stan lub Prowincja: nieznany
  • kod kraju: US
 4
Author: Kristopher Johnson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-10 18:08:44

Ustawienie zmiennej środowiskowej JAVA_HOME Na JDK 5 lub 6 (zamiast JDK 7) naprawiło błąd.

 2
Author: TN.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-04 09:16:24

Może się to zdarzyć, jeśli spróbujesz dołączyć bibliotekę .jar zawierającą plik AndroidManifest.xml.

  • jeśli jest to czysta Java upewnij się, że nie uwzględniasz jej w .jar export
  • Jeśli nie jest to czysta Java (co oznacza, że jest to projekt z Androidem), musisz dołączyć go jako projekt biblioteki
 2
Author: znat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-02 19:26:08

Its ponieważ wcześniej wygenerowany build i current mają konflikt w wersji podpisu między v1 (podpis jar) i v2 (pełny podpis APK),

Aby naprawić zaznacz prawidłową wersję podpisu w oknie dialogowym Generuj podpisany APK

 2
Author: Pankaj kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-31 15:46:15

Po pewnym czasie i wielu wątkach online na ten temat udało mi się naprawić mój projekt.

Bierze się głównie pod uwagę ostatnie Pliki (mogą to być obrazy lub układy ), które wstawiasz. Jeśli je usuniesz, to zadziała i będziesz mógł ponownie zbudować swój projekt.

 0
Author: Nelson R.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-20 03:49:42

Miałem ten błąd w mojej konsoli Eclipse. Okazuje się, że miałem dwa słoiki o tej samej treści, ale różnych nazwach i były ze sobą sprzeczne. Właśnie usunąłem jeden z nich i udało mi się zainstalować aplikację na urządzeniu.

 0
Author: joao2fast4u,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-22 13:38:32

Otrzymałem ten błąd, ponieważ wydałem, że mój ant release zawodził, ponieważ zabrakło mi miejsca na dysku.

 0
Author: Red Cricket,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-17 05:07:08

Dostałem ten błąd, gdy próbowałem zainstalować projekt Xamarin zbudowany na Androidzie N preview na telefonie z api v23. Rozwiązaniem jest, aby tego nie robić.

 0
Author: James Moore,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-27 18:25:52

Innym sposobem uzyskania tego błędu jest zbudowanie przy użyciu ant na macOS i posiadanie pliku ikony Findera (Icon\r) w drzewie źródłowym aplikacji. Wygląda na to, że jarsigner nie może poradzić sobie ze zwrotem karetki w nazwie pliku i chociaż będzie twierdzić, że podpis jest ważny, jeśli -verify APK, zawsze skutkuje to APK, który nie zostanie zainstalowany na urządzeniu. Jak na ironię, Wtyczka Google Drive Finder jest doskonałym źródłem plików ikon Findera.

Rozwiązaniem jest wykluczenie plików naruszających (które są bezużyteczne w APK tak czy inaczej) z takim specyfikatorem w fileset:

    <exclude name="**/Icon&#13;" />
 0
Author: Perry,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-07 05:30:38