Встановлення оновленого файлу .apk вручну не вдається, оскільки "підписи не відповідають раніше встановленій версії"


81

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

Я створив перший apk(підписаний), завантажив його на веб-сервер і все працювало добре.

Виникла невеличка проблема, я її виправив, заново побудував, підписав тим же магазином ключів і завантажив знову. Зараз здається, що я не можу встановити з нового apk. Налагоджувач повідомляє мені:

signatures do not match the previously installed version

Тож я видалив стару версію, відкривши ящик програми та перетягнувши її на кнопку «видалити». Відкриваючи "Налаштування -> Програми", я більше ніде цього не бачу. Я не бачу слідів програми на своєму пристрої.

Проте я все ще отримую вищезазначене повідомлення про помилку.

Чи можливо якась інформація все ще десь зберігається на пристрої? Чи можу я це підтвердити?


Відповіді:


169

Так Це можливо, якщо якось вашу стару програму не видалити на 100% або її дані не видалити.

Спробуйте:

adb uninstall "com.yourapp.yourapp"

Якщо ви точно не знаєте, що поставити як заміну "com.yourapp.yourapp", тоді просто відкрийте Android studio, запустіть програму, коли вона підключена до пристрою, а потім подивіться на вікно налагодження.

Він говорить:

 Waiting for device.
 Target device: samsung-sm_t531-xxxxxxxxx
 Uploading file
 local path: C:\Users\myapp\app\build\outputs\apk\myapp.apk
 remote path: /data/local/tmp/com.myapp.myapp
 Installing com.myapp.myapp
 DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/com.myapp.myapp"
 pkg: /data/local/tmp/com.myapp.myapp
 Success

com.myapp.myapp в цьому випадку - це назва пакета, який потрібно використовувати для видалення.


1
Це справді було питанням. Я раз його розгорнув на телефоні безпосередньо з Android Studio. Здається, цю версію було неправильно видалено. Останнє запитання: чи є спосіб зробити це з Android Studio? Або запустити adb безпосередньо звідти?
— ексгума

Так, просто спробуйте дізнатися, як виконувати команди оболонки з вашого додатка для Android. Ця тема є хорошою відправною точкою: stackoverflow.com/questions/20932102/…
— Ехсан,

Ні-ні-ні. Не запускаються команди з мого додатка;) Мені було цікаво, чи можу я запустити adbбезпосередньо з "Android Studio".
— ексгума

2
Це добре, коли ви розробник .. Але для будь-якого кінцевого користувача, якщо виникає та сама проблема, вам потрібно дотримуватися: Проблема полягала в тому, що в нових версіях Android деінсталяція певним чином видаляється лише для цього конкретного користувача. Відповідь полягає в тому, щоб перейти до налаштувань> додатків> Зайти всередину певної програми, а потім вибрати пункт «Видалити для всіх користувачів» з пункту меню «...» у верхньому правому куті.
— AnkitRox 03.03.16

Сталося зі мною, тому що я змінив назву пакета. видалення зробило трюк
— Гай Софер

23

У мене була та сама проблема, і adb uninstallрішення не працювало для мене.

Те, що спрацювало, було

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

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


Так, це може статися також, якщо на вашому пристрої є кілька облікових записів користувачів, а програма встановлена ​​на декількох. Якщо ви видалите його для одного користувача, він лише "від’єднається" від цього облікового запису. Але це залишається на диску. Він буде повністю видалений лише тоді, коли кожен користувач видалить його.
— ексгума

1
«Видалення для всіх користувачів» спрацювало чудово. Видалено всіх інших користувачів)))
— Inoy

я бачу лише "видалення", а не "видалення для всіх користувачів" за допомогою пікселя емулятора 3 29
— Джулі Піксі

6

Для мене, якщо додаток призначений для розповсюдження, adbрішення - заборона: ви не можете попросити свого друга встановити андроїд sdk на своїй машині!

Тут можна відредагувати атрибут AndroidManifest.xmlта збільшити android:versionCodeатрибут у <manifest>тезі (який є кореневим елементом).

Це оновить встановлену програму


1
Проблема насправді була спричинена тим, що я встановив додаток на пристрій через Android studio під час розробки. Відновити новий файл .apk та розповсюдити його було цілком добре для всіх, крім мене. Тож рішення adb було нормальним.
— ексхума

4

Якщо ви бачите це під час проведення підключених тестів, не забудьте включити .test під час видалення через adb, оскільки видалення через додаток -> налаштування не позбавляє тестовий пакет

adb uninstall your.broken.package.test

якщо ви просто видалите через

adb uninstall your.broken.package

ваш тест-пакет все ще буде там. Це було лише те, що я помітив під час використання командного рядка gradle, не стикався з цією проблемою в андроїд-студії


3

Видаліть стару програму з телефону або емулятора та спробуйте запустити знову.


Це не відповідь. Т.О. заявив, що він вже спробував це, і проблема все ще була.
— BenRoob

1

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

виправлено за допомогою: app Gradle завдання uninstallRelease, а потім installRelease знову


0

Для користувачів Unity, які прийшли на це запитання, найкращою відповіддю дійсно є відповідь вище від @Ehsan

adb uninstall "com.yourapp.yourapp"

Я вже встановив попередню версію на своєму пристрої Android, а потім вибрав її Development Buildв Unity> Build Settings, через яку APK використовував інший підпис. Якщо ви встановлюєте через графічний інтерфейс Android, він фактично не видаляє все, тому вам доведеться використовувати ADB.

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