Додаток для Android не встановлюється. Існуючий однойменний пакет із суперечливим підписом вже встановлений


131

У своєму емуляторі, коли я намагаюся програмно оновити apk. Я отримав:

Android App Not Install.

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

введіть тут опис зображення

Я все ще перебуваю на етапі тестування цього оновлення, тому завантажений я файл - це підписаний apk попередньої версії, який, на мою думку, повинен працювати без проблем.

З пропозиції в: вже встановлений існуючий пакет з тим самим іменем із заплутаною підписом, я намагався запустити емулятор і в режимі налагодження, і в звичайному режимі ... ні працював.

Будь-які думки про те, що мені не вистачає?


1
використовуйте той же підпис, щоб підписати apk перед встановленням
Praveen Sharma

Ця проблема створюється завдяки невідповідності файлів підпису або зберігання ключів, знайдіть посилання на рішення: readyandroid.wordpress.com/…
Ready Android

Відповіді:


97

Проблема полягає в ключах, які використовувались для підписання APK, за замовчуванням, якщо ви працюєте безпосередньо зі свого IDE та відкриваєте емулятор, APK, встановлений у емуляторі, підписується вашим ключем налагодження (зазвичай встановлюється у ~ / .android /debug.keystore), тому якщо попередній APK був підписаний іншим ключем, відмінним від того, яким ви зараз користуєтесь, ви завжди отримаєте конфлікт підписів, щоб виправити це, переконайтеся, що ви використовуєте той самий ключ для підписання обидва APK, навіть якщо попередній APK був підписаний ключем налагодження з іншого SDK, ключі, безумовно, будуть іншими.

Крім того, якщо ви не знаєте, який саме ключ використовувався раніше для підписання apk, і все ж ви хочете встановити нову версію свого додатка, ви можете просто видалити попередню програму та встановити її знову.

Сподіваюся, що це допомагає ...

З повагою!


Я збираюсь підписати apk, який не розробник, і завантажити / встановити вручну емулятор вручну. Потім емулятор повинен завантажити інший apk, не підписаний dev, і спробувати зробити оновлення. Якщо це спрацює, я прийму вашу відповідь. Thx
James Oravec

@MartinCazares в будь-якому випадку є ключ APK? тож я не втрачаю даних програми?
heisenberg

Ну, якщо ви встановили додаток, у вас повинен бути ключ, інакше як би ви підписали apk? Якщо попередній apk не був створений вами, то вам потрібно запитати у розробника цього apk для ключа, крім того, що немає жодного способу отримати ключ, який використовувався для підписання apk ...
Martin Cazares

Дякую за це! Ти врятував мій день і мою команду! Ха-ха
перозцо

1
У мене є програма LIVE у playstore, тепер я встановив цю програму на тестовому пристрої, і тепер Для оновлення нової версії програми я оновлюю "versionno" та "namename" у файлі build.gradle програми. Тепер я зробив збірку релізів з підписаним ключем, тепер, намагаючись встановити цю збірку в ньому через помилку ::: Існуючий пакунок із такою ж назвою із суперечливою підписом вже встановлений. І не встановлювати теж. Ласкаво допоможіть.
Таріт Рей

195

У мене було те саме повідомлення про помилку, але ці відповіді не допомогли. У 4.3 Nexus 7 я використовував користувача, який НЕ був власником. Я видалив старішу версію, але все одно отримував те саме повідомлення.

Рішення: мені довелося увійти як власник і перейти в Налаштування -> Програми, потім проведіть пальцем до вкладки Усі. Прокрутіть униз до самого кінця списку, де перераховані старі версії з позначкою "не встановлено". Виберіть її та натисніть кнопку "налаштування" у верхньому правому куті та нарешті "видалити для всіх користувачів"


2
Мені довелося провести пальцем із "Завантаженого" до списку "Усі", щоб знайти його у списку програм.
ShawnFeatherly

1
Як ви вже згадували, переконайтеся, що ви прокручуєте всю донизу - програми "не встановлено" не перелічені в алфавітному порядку.
jmcmann

3
СПАСИБІ!!! Це також було моєю проблемою після того, як я позичив свій тест Nexus 7 другові. Думав, що мої ключі пошкоджені ... Я видалив цього користувача лише для зменшення плутанини в майбутньому.
мм2001

1
Економив мій час. Кудос.
Піюш Патель

2
Дякую. Мені довелося увійти до всіх користувачів та видалити 1 за 1.
Рікардо

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.

введіть тут опис зображення

Перейдіть у Налаштування> Програми, знайдіть та відкрийте інформацію про додаток. Потім відкрийте меню переповнення (3 вертикальних точки) та виберіть Видалити для всіх користувачів.


Це мені допомогло - спасибі. Чомусь у мене з’явилася дві версії мого додатка, навіть після видалення його через домашній екран.
Жоро Тенев

Дякую Жоро Тенев, який проголосував за мене
Кешав Гера


5

Існує різниця між підписаними та неподписаними файлами APK. Швидше за все, ви раніше там не підписувались. Вам потрібно просто видалити неподписаний, перш ніж встановити підписану версію. Як це можна досягти, залежить від конкретної версії, але в цілому перейдіть на емуляторі до налаштувань-> програми, довго натискайте додаток і видаляйте / видаляйте / видаляйте його.


Я зроблю непідписаний apk і завантажую безпідписаний apk і бачу, чи це вирішує його, якщо це зробити, то я можу перевірити підписані apks апаратним шляхом. Я прийму відповідь, якщо це так.
Джеймс Оравець

Я намагаюся зробити оновлення в межах своєї програми, тому видалення / встановлення вручну не спрацює.
Джеймс Оравець

Коли я зробив непідписаний додаток, я просто отримую app not installed. Я перевірив налаштування емулятора, і він Allow installation of apps from unknown sourcesперевірив. Тож це, здається, не є рішенням.
Джеймс Оравець

даючи вам голос за пропозиції. Я думаю, що це допомогло нам дійти до остаточного рішення. Дякую!
Джеймс Оравець

5

Якщо ви використовуєте налагоджувальну програму apk, ключ, який використовується для її підписання, є

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

Якщо ви використовуєте той самий ключ, при установці не повинно виникнути конфліктів.


Дякую багато Сантьяго, минулого дня я змінив жорсткий диск машини з механічного диска на твердотільний диск, тому мені потрібно оновити свою Windows, я зіткнувся з тією ж проблемою, після чого я скопіював файл debug.keystore з попередньої папки Windows на новий проблема папки Windows вирішується :)
Arslan Sohail

Дякую за відповідь, оскільки це фактично вирішило мою проблему, я програмую з другом, і у нас часто виникала ця проблема, тепер, коли ми ділимося ключем налагодження, все добре.
Gustavo Magalhães

5

Якщо вищезгадані рішення не спрацювали для вас, можливо, ви зробите щось наступне.

1) встановлення програми з Appstore.
2) оновлення його знаком APK з оновленою версією того самого пакета.

Тому в основному існує два види, якщо APK.

1) ви завантажили в playstore, відомий як оригінальний APK.
2) завантажити з playstore, відомого як похідне APK.

В основному ви завантажуєте похідний apk і оновлюєте його оригінальним APK.

Нехай це працює добре, завантажте новий підписаний випущений APK у внутрішньому тестовому режимі на Google Play Store та завантажте отриманий APK, щоб перевірити сценарій оновлення.

введіть тут опис зображення


2

Якщо ви використовуєте декількох користувачів на Android, переконайтесь, що додаток видалено скрізь.


Дуже схожа на популярну відповідь stackoverflow.com/a/20084044/4136325 вище, ви не думаєте?
Томас Веллер

1
так, у цьому полягає хитрість - видалення програми для всіх користувачів
Martin Koubek

1

У мене виникла проблема, коли і налагодження, і збірка версій не встановлюватимуться на пристроях, які я використовував для налагодження. Той самий msg з'явиться при спробі встановити нову версію. Єдиним рішенням було видалення поточної версії та встановлення нової.

Схоже, Android-студія позначає встановлену програму apk, щоб установка за допомогою менеджерів пакетів розрізняла версію, встановлену для налагодження, та версії, завантажені з Google play чи інших зовнішніх джерел (цього ніколи не траплялося зі мною при використанні eclipse).


1

Можливо, додаток не видаляється успішним. Якщо це ваш пристрій, ви можете спробувати цей метод.

Спочатку отримайте назву пакета програми, наприклад, 'com.xxx.app', ви можете скористатися Root Explorer і знайти його з файлу Manifest (RE може декодувати файл). тоді ви можете використовувати цей скрипт для його видалення:

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

1

Та сама помилка пакету:

  1. Створіть у своєму додатку новий пакет із іншою назвою.
  2. Скопіюйте та вставте весь файл зі свого старого пакета в новий пакет.
  3. Зберегти код.
  4. Видаліть старий пакет і очистіть і відновіть проект.

1. Дуже 2. короткий 3. міг 4. використати 5. пояснення.
Yunnosch

1

введіть тут опис зображенняМені довелося увійти як власник і перейти в Налаштування -> Програми, після чого проведіть пальцем до вкладки Усі. Прокрутіть униз до самого кінця списку, де перераховані старі версії з позначкою "не встановлено". Виберіть її та натисніть кнопку "налаштування" у верхньому правому куті та нарешті "видалити для всіх користувачів"


Це працювало для мене, але ... зараз при завантаженні з мого веб-сайту додаток не завантажується (принаймні в папку Завантажити). Про помилки не повідомлялося. Просто не буває. Коли я підключаю телефон до комп’ютера, я можу скопіювати APK на телефон та встановити без повідомлень про помилки.
Рон

0

Можливо, буде інша причина, коли ваша програма не оновлюватиметься, коли ви або зміните / додаєте / видалите shareId в AndroidManifiest.

"android: sharedUserId"

Перевірте це також.

Для запобігання рекомендую використовувати sharedUserId у вашій програмі, незважаючи на ваші поточні вимоги, які вам потрібні чи зараз.


0

Я спробував усе вищесказане, і це не вийшло.

Я виявив, що, незважаючи на видалення програми, нова версія додатка все-таки видає ту ж помилку.

Це вирішило це: перейдіть у Налаштування -> Загальне -> Менеджер програм -> виберіть додаток -> натисніть на три точки вгорі -> видаліть для всіх користувачів

Як тільки ви це зробите, тепер він фактично видалено і тепер дозволить встановити нову версію.

Сподіваюся, це допомагає.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.