проблема с установкой поверх приложения, установленного из google play

Я столкнулся со следующей проблемой на двух устройствах Samsung Galaxy S4:

При попытке установить более новую версию, щелкнув файл APK в сообщении электронной почты, все работает нормально. Если вы попытаетесь установить еще одну новую копию из нового APK поверх ранее установленного, это также сработает.

Но если установлена ​​оригинальная версия из Google Play, и мы пытаемся установить APK из электронной почты, мы получаем сообщение, App not installedи, очевидно, приложение не устанавливается...

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

Как узнать, все ли будет хорошо, если я отправлю новую версию в Google Play?
Существует ли официальное ограничение, согласно которому источник установки должен быть одинаковым для обновления?
Есть ли способ обойти этот лимит?

ОБНОВЛЯТЬ:

Я последовал совету, данному @GiantTree в этом комментарии.

Я установил эмулятор терминала и выполнил его pm install -r mypackage.apk, что дало что-то вроде 60 строк try again in 1second(отсутствует место в исходном сообщении), затем он сказал дважды failed to connect to dumpstate serviceи, наконец killed, .

Выполняя, logcat >log.txtя нашел строку: `java.lang.SecurityException:

Neither user 10210 nor current process has android.permission.INSTALL_PACKAGES.

ОБНОВЛЕНИЕ 2:

при более тщательном изучении файла журнала я нашел эту строку:

D/InstallAppProgress(8973): Код ошибки установки: -25

но я не могу найти, что означает этот код ошибки...

Все еще жду дальнейших предложений...

Вы случайно не пытаетесь установить старую версию поверх новой? // С точным сообщением об ошибке (и номером) вы также можете заглянуть в список ошибок в нашей вики-теге google-play-store .
@Izzy - вы правы - код моей версии был случайно ниже, чем в моей производственной версии. пожалуйста, добавьте в качестве ответа, и я приму.
Сделанный! Теперь, когда вы обновили свой вопрос с кодом ошибки, я даже нашел ссылку. Я знал, что это звучит знакомо, но сначала не мог этого найти.
Да, только в этой ссылке не было ответа, пока я не поместил его туда :)

Ответы (3)

Эта ошибка часто возникает, когда вы пытаетесь установить более старую версию поверх уже установленной более новой версии того же приложения. Если это действительно то, что вы собираетесь сделать, вам, возможно, придется сначала удалить, а затем переустановить рассматриваемое приложение. Чтобы не потерять его данные, вы можете попробовать удалить его через adb uninstall -k <package>: это удалит приложение, но сохранит ( -k) его данные.

Для получения дополнительной информации вы также можете увидеть:

Ни для чего нет предела. Пока имя пакета и используемая подпись остаются прежними, это считается одним и тем же приложением. Попробуйте установить через adb:adb install -r <apk>

если у вас уже есть apk на вашем телефоне, попробуйте использовать эмулятор терминала и выполните эту команду. В качестве альтернативы попробуйте pm install -r <apk>на своем телефоне; это то, что делает и adb.
Также может быть полезно, если я скажу, что устройство не имеет root-прав, насколько я знаю.
Ой. Я думал, вы сможете устанавливать приложения без системных разрешений. Попробуйте снова установить стандартным методом и проверьте logcat. Там должно быть написано, почему приложение не может быть установлено.

Даже если версия новее, я не смог установить пользовательское загруженное приложение поверх того же приложения, но версии Google Play. Я испытал это несколько раз с различными приложениями во время тестирования.

Мне пришлось удалить версию Google Play, и только после этого мне разрешили установить загруженное приложение. На самом деле установка приложения будет продолжаться до самого конца, когда установщик выдаст ошибку.

вы должны посмотреть versionCode для обеих этих версий и убедиться, что новая версия выше, чем у старой версии... Возможно, есть другие причины, по которым такое обновление не удастся, но для меня это был versionCode.
Хорошо, сделаю так, если снова получу такую ​​ошибку. Что произойдет, если версия будет одинаковой? (Как в бета-обновлении)
Я не проверял, поэтому не знаю. логически я ожидал бы, что это сработает... но просто попробуйте и убедитесь сами.
Ок попробую в следующий раз. Проблема в том, что я не разработчик, а тестировщик.