Aplikacja na Androida nie została zainstalowana. Istniejący pakiet o tej samej nazwie z kolidującym podpisem jest już zainstalowany


131

W moim emulatorze, gdy próbuję programowo zaktualizować mój apk. Dostaję:

Android App Not Install.

An existing package by the same name with a conflicting signature is already installed

wprowadź opis obrazu tutaj

Nadal jestem w fazie testów tej aktualizacji, więc pobrany przeze mnie plik to podpisany apk poprzedniej wersji, który moim zdaniem powinien działać bez żadnych problemów.

Z sugestii w: istniejący pakiet o tej samej nazwie z niezgodnym podpisem jest już zainstalowany. Próbowałem uruchomić emulator zarówno w trybie debugowania, jak iw trybie normalnym ... żaden nie działał.

Jakieś przemyślenia na temat tego, czego mi brakuje?


1
użyj tego samego podpisu, aby podpisać apk przed instalacją
Praveen Sharma

Odpowiedzi:


99

Problem polega na tym, że klucze, które zostały użyte do podpisania plików APK, domyślnie, jeśli uruchamiasz bezpośrednio ze swojego IDE i otwierasz emulator, pakiet APK zainstalowany w emulatorze jest podpisany kluczem debugowania (zwykle instalowanym w ~ / .android /debug.keystore), więc jeśli poprzedni plik APK został podpisany innym kluczem niż ten, którego obecnie używasz, zawsze pojawi się konflikt podpisów, aby go naprawić, upewnij się, że używasz tego samego klucza do podpisania oba pliki APK, nawet jeśli poprzedni plik APK został podpisany kluczem debugowania z innego zestawu SDK, klucze na pewno będą inne.

Również jeśli nie wiesz dokładnie, jaki klucz został użyty wcześniej do podpisania apk, a mimo to chcesz zainstalować nową wersję swojej aplikacji, możesz po prostu odinstalować poprzednią aplikację i ponownie zainstalować nową.

Mam nadzieję że to pomoże...

Pozdrowienia!


Mam zamiar zrobić non dev podpisać apk i wykonać ręczne pobieranie / instalację w emulatorze. Emulator powinien następnie pobrać inny apk podpisany przez programistów i spróbować wykonać aktualizację. Jeśli to zadziała, przyjmuję twoją odpowiedź. Dzięki
James Oravec

@MartinCazares czy w ogóle istnieje możliwość uzyskania klucza apk? więc nie stracę danych aplikacji?
heisenberg

Jeśli zainstalowałeś aplikację, powinieneś mieć klucz, w przeciwnym razie jak podpisałbyś apk? Jeśli poprzedni apk nie został utworzony przez ciebie, musisz poprosić programistę tego apk o klucz, poza tym nie ma możliwości uzyskania klucza, który został użyty do podpisania apk ...
Martin Cazares

Dziękuję bardzo za to! Uratowałeś mój dzień i mój zespół! Haha
perozzo

1
Mam aplikację w LIVE w playstore, teraz zainstalowałem tę aplikację na urządzeniu testowym, a teraz Aby zaktualizować nowszą wersję aplikacji, aktualizuję „nr wersji” i „nazwa wersji” w pliku app build.gradle. Teraz wykonałem kompilację wydania z podpisanym kluczem, teraz próbując zainstalować tę kompilację przez błąd ::: Istniejący pakiet o tej samej nazwie z kolidującym podpisem jest już zainstalowany. I nie jest też instalowany. Uprzejma pomoc .
Tarit Ray

196

Miałem ten sam komunikat o błędzie, ale te odpowiedzi nie pomogły. Na Nexusie 7 4.3 korzystałem z użytkownika, który NIE był właścicielem. Odinstalowałem starszą wersję, ale wciąż otrzymywałem ten sam komunikat.

Rozwiązanie: musiałem zalogować się jako właściciel i przejść do opcji Ustawienia -> Aplikacje, a następnie przesunąć palcem do karty Wszystkie. Przewiń w dół do samego końca listy, na której wymienione są starsze wersje ze znakiem „niezainstalowane”. Wybierz go i naciśnij przycisk „Ustawienia” w prawym górnym rogu, a na końcu „Odinstaluj dla wszystkich użytkowników”


2
Musiałem przejść z listy „Pobrane” do listy „Wszystkie”, aby znaleźć ją na liście aplikacji.
ShawnFeatherly,

2
Jak już wspomniałeś, pamiętaj, aby przewinąć całą drogę w dół - „niezainstalowane” aplikacje nie są wymienione w kolejności alfabetycznej.
jmcmann

3
DZIĘKUJĘ CI!!! To też był mój problem po pożyczeniu testowego Nexusa 7 znajomemu. Myślałem, że moje klucze są uszkodzone ... Usunąłem tego użytkownika tylko po to, aby ograniczyć przyszłe zamieszanie.
mm2001

1
Zaoszczędziłem mój czas. Sława.
Piyush Patel

2
Dzięki. Musiałem zalogować się do wszystkich użytkowników i odinstalować 1 na 1.
Ricardo

8
 Go to Settings > Apps, find and open the app info. Then, open the overflow menu (3 vertical dots), and choose Uninstall for all users.

wprowadź opis obrazu tutaj

Wybierz Ustawienia> Aplikacje, znajdź i otwórz informacje o aplikacji. Następnie otwórz rozszerzone menu (3 kropki w pionie) i wybierz Odinstaluj dla wszystkich użytkowników.


To mi pomogło - dzięki. Z jakiegoś powodu pojawiły się tam dwie wersje mojej aplikacji nawet po odinstalowaniu jej na ekranie głównym.
Joro Tenev,

Dzięki Joro Tenev Voting Me
Keshav Gera


5

Istnieje różnica między podpisanymi i niepodpisanymi plikami APK. Najprawdopodobniej miałeś tam wcześniej niepodpisany. Musisz tylko usunąć niepodpisaną wersję przed zainstalowaniem podpisanej wersji. Sposób, w jaki można to osiągnąć, zależy od dokładnej wersji, ale ogólnie przejdź do emulatora do ustawień-> aplikacja, długo kliknij swoją aplikację i usuń / usuń / odinstaluj ją.


Zrobię niepodpisany apk i pobiorę niepodpisany apk i zobaczę, czy to rozwiązuje, a jeśli tak, mogę przetestować podpisane apki za pomocą sprzętu. Przyjmuję odpowiedź, jeśli tak jest.
James Oravec

Próbuję przeprowadzić aktualizację z poziomu mojego programu, więc ręczne odinstalowanie / instalacja nie zadziała.
James Oravec

Kiedy wykonałem niepodpisaną instalację aplikacji, po prostu otrzymałem app not installed. Sprawdziłem ustawienia emulatora i Allow installation of apps from unknown sourcessprawdziłem. Więc to nie wydaje się być rozwiązaniem.
James Oravec

dając Ci głos pozytywny na sugestie. Myślę, że pomogło nam to w znalezieniu ostatecznego rozwiązania. dzięki!
James Oravec

5

Jeśli korzystasz z aplikacji do debugowania, klucz używany do logowania się znajduje

C:\Users\<user>\.android\debug.keystore

Jeśli użyjesz tego samego klucza, nie powinno być konfliktu podczas instalacji.


Wielkie dzięki Santiago, ostatniego dnia zmieniłem dysk twardy mojego komputera z dysku mechanicznego na dysk SSD, dlatego muszę zaktualizować system Windows, stanąłem przed tym samym problemem, gdy skopiowałem plik debug.keystore z poprzedniego folderu Windows do nowego Windows, problem został rozwiązany :)
Arslan Sohail

Dzięki za odpowiedź, bo to faktycznie rozwiązało mój problem, programuję z przyjacielem i często mieliśmy ten problem, teraz, gdy dzielimy się kluczem debugowania, wszystko jest w porządku.
Gustavo Magalhães

5

Jeśli powyższe rozwiązania nie zadziałały, być może musisz wykonać następujące czynności.

1) instalacja aplikacji z Appstore.
2) zaktualizowanie go za pomocą podpisanego pliku APK z zaktualizowaną wersją tej samej nazwy pakietu.

Zasadniczo istnieją dwa rodzaje plików APK.

1) przesłany przez Ciebie do Playstore znanego jako oryginalny plik APK.
2) pobierz z playstore znanego jako pochodny APK.

W tym przypadku w zasadzie pobierasz pochodny apk i aktualizujesz go o oryginalny plik APK.

Aby działało dobrze, załaduj nowy podpisany wydany plik APK w trybie testu wewnętrznego w sklepie Google Play i pobierz pochodny plik APK, aby sprawdzić scenariusz aktualizacji.

wprowadź opis obrazu tutaj



1

Wystąpił problem polegający na tym, że zarówno kompilacja do debugowania, jak i wersja wydania nie zostaną zainstalowane na urządzeniach, których używałem do debugowania. Ta sama wiadomość pojawiłaby się podczas próby zainstalowania nowej wersji. Jedynym obejściem było odinstalowanie aktualnej wersji i zainstalowanie nowej.

Wygląda na to, że Android Studio oznacza instalowany apk, aby instalacja za pomocą menedżerów pakietów rozróżniła wersję zainstalowaną do debugowania od wersji pobranych z Google Play lub innych źródeł zewnętrznych (nigdy mi się to nie zdarzyło podczas korzystania z eclipse).


1

Być może aplikacja nie została pomyślnie odinstalowana. Jeśli Twoje urządzenie jest w tym przypadku, możesz wypróbować tę metodę.

Najpierw pobierz nazwę pakietu aplikacji, np. „Com.xxx.app”, możesz użyć Root Explorer i znaleźć go w pliku manifestu (RE może zdekodować plik). następnie możesz użyć tego skryptu, aby go odinstalować:

adb shell pm uninstall com.xxx.app // replace to package name that you want to remove

1

Ten sam błąd pakietu:

  1. Utwórz nowy pakiet w swojej aplikacji pod inną nazwą.
  2. Skopiuj i wklej cały plik ze starego pakietu do nowego pakietu.
  3. Zapisz kod.
  4. Usuń stary pakiet i wyczyść, a następnie odbuduj projekt.

1. Bardzo 2. krótki 3. potrafię 4. użyć 5. wyjaśnienia.
Yunnosch

1

wprowadź opis obrazu tutajMusiałem zalogować się jako właściciel i przejść do Ustawienia -> Aplikacje, a następnie przesunąć palcem do karty Wszystkie. Przewiń w dół do samego końca listy, na której wymienione są starsze wersje ze znakiem „niezainstalowane”. Wybierz go i naciśnij przycisk „Ustawienia” w prawym górnym rogu, a na końcu „Odinstaluj dla wszystkich użytkowników”


U mnie to zadziałało, ale ... teraz, gdy pobieram z mojej strony, aplikacja nie pobiera się (przynajmniej do folderu Download). Nie zgłoszono żadnych błędów. Po prostu się nie dzieje. Po podłączeniu telefonu do komputera mogę skopiować plik APK na telefon i zainstalować bez zgłaszania błędów.
Ron

1

Wypróbowałem wszystkie powyższe i nie zadziałało.

Zauważyłem, że pomimo odinstalowania aplikacji, nowa wersja aplikacji nadal wyświetla ten sam błąd.

Oto, co go rozwiązało: przejdź do Ustawienia -> Ogólne -> Menedżer aplikacji -> wybierz swoją aplikację -> kliknij trzy kropki u góry -> odinstaluj dla wszystkich użytkowników

Gdy to zrobisz, teraz zostanie faktycznie odinstalowany i pozwoli na zainstalowanie nowej wersji.

Mam nadzieję że to pomoże.


0

Może istnieć inny powód, dla którego aplikacja nie zostanie zaktualizowana po zmianie / dodaniu / usunięciu shareId w AndroidManifiest.

„android: sharedUserId”

Sprawdź to również.

Aby temu zapobiec, zalecamy użycie sharedUserId w aplikacji, pomimo aktualnych wymagań, których potrzebujesz lub teraz.

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.