При установке обновленного APK вручную происходит сбой: «подписи не соответствуют ранее установленной версии».

81

Я создал глупое приложение, чтобы поделиться им с друзьями. Не нужно выкладывать его в магазин приложений.

Я построил первый apk(подписанный), загрузил его на веб-сервер, и все прошло хорошо.

Возникла небольшая проблема, я ее исправил, перестроил, подписал с тем же хранилищем ключей и снова загрузил. Теперь кажется, что я не могу установить по новой apk. Отладчик сообщает мне:

signatures do not match the previously installed version

Поэтому я удалил старую версию, открыв панель приложений и перетащив ее на кнопку «Удалить». При открытии "Настройки -> Приложения" больше нигде не вижу. Я не вижу следов приложения на моем устройстве.

Тем не менее, я все еще получаю указанное выше сообщение об ошибке.

Возможно ли, что на устройстве все еще хранится какая-то информация? Есть ли способ проверить это?

эксгума
источник
1
связанный stackoverflow.com/questions/8137962/…
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Ответы:

169

Да. Возможно, если каким-то образом ваше старое приложение не удалено на 100% или его данные не удалены.

Пытаться:

adb uninstall "com.yourapp.yourapp"

Если вы точно не знаете, что заменить на «com.yourapp.yourapp», просто откройте студию Android, запустите приложение, пока оно подключено к устройству, а затем посмотрите окно отладки.

Он говорит:

 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 прямо оттуда?
exhuma
Да, просто попробуйте узнать, как выполнять команды оболочки из своего приложения для Android. Этот поток является хорошей отправной точкой: stackoverflow.com/questions/20932102/…
Эхсан,
нет нет нет. Не выполняю команды из моего приложения;) Мне было интересно, могу ли я запустить adbпрямо из "Android Studio".
exhuma
2
Это хорошо, когда вы разработчик. Но для любого конечного пользователя, если возникает такая же проблема, вам необходимо следовать: проблема заключалась в том, что в более новых версиях Android удаление каким-либо образом удалялось только для этого конкретного пользователя. Ответ заключается в том, чтобы перейти в «Настройки»> «Приложения»> «Войти в конкретное приложение», а затем выбрать «Удалить для всех пользователей» в пункте меню «...» в правом верхнем углу.
AnkitRox 03
Произошло со мной из-за того, что я изменил имя пакета. удаление сделало свое дело
Гай Софер
23

У меня была такая же проблема, и adb uninstallрешение не помогло мне.

Что сработало, было

  • На вашем устройстве перейдите в Настройки-> Приложения.
  • Выберите свое приложение и в меню выберите «Удалить для всех пользователей».

Даже если я ранее удалил приложение, оно все еще было в списке.

Жюльен
источник
Да, это также может произойти, если у вас есть несколько учетных записей пользователей на вашем устройстве, и приложение установлено более чем на одной. Если вы удалите его для одного пользователя, он будет «отсоединен» только от этой учетной записи. Но он остается на диске. Он будет полностью удален только после того, как каждый пользователь удалит его.
exhuma
1
«Удаление для всех пользователей» сработало отлично. Удалил всех остальных пользователей)))
Иной
Я вижу только «удаление», а не «удаление для всех пользователей» с использованием эмулятора
Pixie
6

Для меня, если приложение предназначено для распространения, adbрешение непростое: вы не можете попросить друга установить на его машину android sdk!

Здесь можно отредактировать AndroidManifest.xmlи увеличить android:versionCodeатрибут в <manifest>теге (который является корневым элементом).

Это обновит ваше установленное приложение

Грег Бергер
источник
1
На самом деле проблема была вызвана тем, что я установил приложение на устройстве через студию Android во время разработки. Восстановление нового APK и его распространение было прекрасно для всех, кроме меня. Так что решение adb было в порядке.
exhuma
4

Если вы видите это при проведении подключенных тестов, обязательно включите .test при удалении через adb, потому что удаление через приложение -> настройки не избавляет от тестового пакета

adb uninstall your.broken.package.test

если вы просто удалите через

adb uninstall your.broken.package

ваш тестовый пакет все еще будет там. Это было только то, что я заметил при использовании командной строки gradle, не сталкивался с этой проблемой в студии Android.

Джо Махер
источник
3

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

Ирфан АЙДИН
источник
Это не ответ. SO заявил, что он уже пробовал это, и проблема все еще существует.
BenRoob
1

Я получил эту ошибку при попытке установить выпуск при подписании сертификата.

исправлено с помощью: app Gradle task uninstallRelease, а затем installRelease еще раз

EF5
источник
0

Для пользователей Unity, которые задают этот вопрос, лучший ответ - это тот, который выше @Ehsan.

adb uninstall "com.yourapp.yourapp"

Я уже установил предыдущую версию на свое устройство Android, а затем выбрал Development BuildUnity> Настройки сборки, что привело к тому, что APK использовал другую подпись. Если вы устанавливаете через графический интерфейс Android, он фактически не удаляет все, поэтому вам нужно использовать ADB.

ow3n
источник