Próbowałem zmienić moją domyślną / główną / startową (jakkolwiek to nazwiesz) aktywność, edytując androidmanifest.xml
plik. Zmieniłem tylko android:name
nieruchomość. Jednak to całkowicie zepsuło całą aplikację. kiedy próbuję zainstalować, kończy się niepowodzeniem i czyta.
Błąd instalacji: INSTALL_PARSE_FAILED_NO_CERTIFICATES
Kiedy próbowałem przywrócić go do poprzedniego stanu, nadal wyświetlał ten sam błąd ... Co ja zrobiłem?
android
installation
apk
android-install-apk
mtmurdock
źródło
źródło
INSTALL_PARSE_FAILED_NO_CERTIFICATES
jest to błąd-103
, który można uzyskać / zobaczyć przezadb log
( src ) np.D/PackageInstaller(21320): Installation error code: -103
Odpowiedzi:
Czy edytowałeś
AndroidManifest.xml
bezpośrednio w.apk
pliku? Jeśli tak, to nie zadziała.Każdy Android
.apk
musi być podpisany, jeśli ma zostać zainstalowany na telefonie , nawet jeśli nie instalujesz za pośrednictwem Market. Narzędzia programistyczne obejdą ten problem, podpisując certyfikat programistyczny, ale.apk
nadal jest podpisany.Jednym z zastosowań tego jest to, aby urządzenie mogło stwierdzić, czy
.apk
jest to ważne uaktualnienie dla zainstalowanej aplikacji, ponieważ jeśli to jest, certyfikaty będą takie same.Jeśli więc wprowadzisz jakiekolwiek zmiany w swojej aplikacji, musisz ją odbudować,
.apk
aby została poprawnie podpisana.źródło
flutter clean
i uruchom / debuguj! Ta operacja jest podobna do powyższego rozwiązania, ponieważ czyści folder kompilacji i ponownie kompiluje plik kompilacji podczas uruchamiania / debugowania!Zauważyłem, że ten błąd może teraz wystąpić również podczas korzystania z niewłaściwej konfiguracji podpisywania. Jak opisano tutaj , Android 7.0 wprowadza nowy schemat podpisu, V2 . Schemat V2 podpisuje cały plik APK, a nie tylko plik JAR, jak ma to miejsce w schemacie V1. Jeśli podpiszesz się tylko przy użyciu wersji 2 i spróbujesz zainstalować w miejscu docelowym w wersji starszej niż 7.0, pojawi się ten błąd, ponieważ same pliki JAR nie są podpisane, a PackageManager w wersji wcześniejszej niż 7.0 nie może wykryć obecności podpisu APK w wersji 2.
Aby zachować zgodność ze wszystkimi systemami docelowymi, upewnij się, że plik APK jest podpisany przy użyciu obu schematów, zaznaczając oba pola wersji podpisu w oknie dialogowym Generuj podpisany plik APK w Android Studio, jak pokazano tutaj:
Jeśli przewiduje się tylko cele 7.0, nie ma potrzeby dołączania sygnatury V1.
źródło
Odkryłem, że jest to spowodowane moją wersją JDK.
Miałem ten problem z 'ant' i wynikało to z tego OSTRZEŻENIA wymienionego w dokumentacji:
Mam JDK 7. W moim dzienniku Ant, użyłem -v do określenia gadatliwości i to pokazało
Podpisałem JAR ręcznie i wyrównałem go zipem, ale dał trochę inny błąd:
Znalazłem odpowiedź tutaj.
Jak radzić sobie z INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES bez odinstalowywania
Musiałem go tylko odinstalować, a potem zadziałało!
Teraz muszę tylko zmodyfikować plik build.xml, aby używać tych opcji podczas podpisywania!
OK, oto jest: C: \ Program Files \ Java \ android-sdk \ tools \ ant \ build.xml
źródło
W większości przypadków rozwiązanie tego błędu jest naprawdę proste:
źródło
rozwiązany (dla mnie) używając w keytool argumentów
i używając w jarsigner
rozwiązanie znalezione w
Jakie pułapki występują w przypadku podpisywania plików APK na Androida?
źródło
Miałem również do czynienia z tym samym problemem. Najpierw wygenerowałem kompilację przy użyciu V2 i zainstalowałem ją na urządzeniach mobilnych z systemem OS 5.1 i mam ten sam problem. Ale kompilacja działała dobrze na tablecie z systemem operacyjnym 7.0. Wygenerowałem więc kompilację z sygnaturą V1 Jar i działała dobrze na obu urządzeniach.
Wniosek: jeśli obsługujesz urządzenie poniżej systemu operacyjnego Android 7.0. Użyj sygnatury jar V1, aby wygenerować kompilację.
źródło
W moim przypadku mogłem budować i uruchamiać kompilacje wydania, ale pojawił się
INSTALL_PARSE_FAILED_NO_CERTIFICATES
błąd podczas próby wykonania kompilacji debugowania.Rozwiązaniem było usunięcie mojego
debug.keystore
pliku i umożliwienie ADT odtworzenia go. Najwyraźniej wygasł.Lepszym długoterminowym rozwiązaniem jest jawne utworzenie,
debug.keystore
które nie wygasa po zaledwie roku, zamiast pozwolić ADT na jego utworzenie. Oto polecenie, aby to zrobić:Po wyświetleniu monitu wprowadź następujące wartości:
źródło
To brzydkie, ale szybkie rozwiązanie: użyj JDK 6 zamiast 7.
Po przeczytaniu odpowiedzi Chloe odinstalowałem JDK 7 (i tak go obecnie nie potrzebuję) i zainstalowałem JDK 6. To naprawiło problem. Lepszym rozwiązaniem byłoby użycie przez Ant JDK 6 (bez odinstalowywania 7). Może możliwa zmiana / ustawienie tej właściwości:
java.library.path
w pliku local.properties. Znajduje się w katalogu projektu (root).
Android i tak nie działa z JDK 7 (tylko 6 lub 5), więc spraw, aby skrypt Ant również używał JDK 6 lub 5, to prawdopodobnie dobre rozwiązanie.
źródło
Jest to spowodowane tym, że poprzednio wygenerowana kompilacja i bieżąca ma konflikt w wersji podpisu między v1 (podpis jar) a v2 (pełny podpis APK),
Aby naprawić zaznacz odpowiednią wersję podpisu w oknie dialogowym Generuj podpisany plik APK
źródło
Ostatnio miałem ten błąd podczas aktualizacji do Android Studio 4.0. Przyczyną było to, że projekt miał wyłączone podpisywanie V2 w konfiguracji logowania
build.gradle
.Rozwiązaniem było usunięcie
v2SigningEnabled false
lub jawne ustawienie tego natrue
, co jest wartością domyślną.źródło
W nowszych wersjach Android Studio 3.2+, jeśli próbujesz uruchomić
release
instalację i nie zdefiniowałeś żadnych konfiguracji podpisywania, wyświetli się monit o błąd, a instalacja zakończy się niepowodzeniem. Musisz albo uruchomićdebug
kompilację, albo poprawnie skonfigurować konfigurację podpisywania (V1 lub V2).źródło
większość odpowiedzi jest prawdziwa. i kilka innych powodów, które się zdarzają
źródło
Może się to zdarzyć, jeśli spróbujesz dołączyć
.jar
bibliotekę zawierającąAndroidManifest.xml
plik.źródło
Możesz też sprawdzić
Project Structure
->Default Config
->Signing Config
po dodaniu wszystkiego, czego potrzebujesz
źródło
Ustawienie zmiennej środowiskowej
JAVA_HOME
na JDK 5 lub 6 (zamiast JDK 7) naprawiło błąd.źródło
Po pewnym czasie i wielu wątkach online na ten temat udało mi się naprawić swój projekt.
Jest to głównie brane pod uwagę ostatnie pliki ( mogą to być obrazy lub układy ), które umieściłeś. Jeśli je usuniesz, wszystko się ułoży i będziesz mógł ponownie zbudować projekt.
źródło
Miałem ten błąd w mojej Konsoli Eclipse. Okazuje się, że miałem dwa słoiki z tą samą zawartością, ale różnymi nazwami i kolidowały ze sobą. Właśnie usunąłem jeden z nich i udało mi się zainstalować aplikację na urządzeniu.
źródło
Otrzymałem ten błąd, ponieważ opublikowałem informację, że moja
ant release
awaria jest spowodowana brakiem miejsca na dysku.źródło
Wystąpił ten błąd, gdy próbowałem zainstalować projekt Xamarin utworzony dla wersji zapoznawczej systemu Android N na telefonie z interfejsem API w wersji 23. Rozwiązaniem jest tego nie robić.
źródło
Innym sposobem uzyskania tego błędu jest kompilacja
ant
w systemie macOS i umieszczenie pliku ikony Findera (Icon\r
) w drzewie źródłowym aplikacji. Wygląda najarsigner
to, że nie radzi sobie ze znakiem powrotu karetki w nazwie pliku i chociaż będzie twierdził, że podpis jest ważny, jeśli ty-verify
APK, zawsze powoduje, że plik APK 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 naruszających plików (które i tak są bezużyteczne w APK) za pomocą takiego specyfikatora w
fileset
:źródło
Ten problem wystąpi, jeśli instalujesz niepodpisaną wersję pakietu APK. Sprawdź, czy instalujesz poprawny plik APK.
źródło
Miałem ten problem z ionic / Visual Studio Code (uruchom Androida na urządzeniu):
Odinstalowałem aplikację na urządzeniu mobilnym (Ustawienia / Aplikacje), błąd zniknął i aplikacja się uruchamia.
źródło
Zgłasza ten błąd dzisiaj, ponieważ mam aplikację z min sdk 28 i uruchamiam grę na emulatorze z wersją SDK 23. Zwykle nie jest to możliwe (AS szary jest na przycisku odtwarzania), ale dzisiaj nie tak wiele.
źródło
Najpierw spróbuj to zrobić:
źródło
Jeśli używasz emulatora, spróbuj go zresetować, a jeśli na telefonie komórkowym najpierw odinstaluj aplikację, wyłącz tryb programisty, a następnie włącz go, problem zostanie rozwiązany.
źródło