Встановлення оновленого файлу .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.