почему новая версия apk моего приложения для Android не устанавливается поверх старой версии

Я успешно создал небольшое частное приложение для Android (используя appcelerator, если это имеет значение) и установил его на свое устройство из подписанного файла apk.

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

Когда я пытаюсь установить это на свое устройство Android, как и ожидалось, оно предупреждает меня, что «устанавливаемое вами приложение заменит другое приложение», но «все данные предыдущего приложения будут сохранены». Я согласен на замену, и установка продолжается без ошибки, пока не появится сообщение «Приложение не установлено», без каких-либо других подробностей.

Код версии и имя в оригинальном apk:

android:версияCode="1" android:versionName="1.0"

и во второй версии

android:версияCode="2" android:versionName="1.1"

Я схожу с ума от этого, что я упускаю?


person Finglish    schedule 15.12.2011    source источник
comment
ваши версии приложений подписаны одним и тем же ключом?   -  person stefan    schedule 16.12.2011
comment
Повторите все свои действия с вашим устройством, подключенным к DDMS, посмотрите, сможете ли вы получить подробную трассировку стека, чем приложение, не установленное из Logcat.   -  person yorkw    schedule 16.12.2011
comment
Скорее всего, они каким-то образом подписаны разными ключами. Это точное поведение, которое он имеет на большинстве устройств в этом сценарии.   -  person FoamyGuy    schedule 16.12.2011


Ответы (5)


Сначала попробуйте установить приложение с помощью adb:

adb install -r /path/to/your.apk

Если это не поможет, попробуйте:

adb shell pm uninstall -k com.your.package
adb install /path/to/your.apk

Это удалит apk, сохранив при этом все его данные. А потом переустанавливает еще раз. Если и это не поможет, adb по крайней мере выдаст вам код ошибки, с которым гораздо проще устранять неполадки.

person inazaruk    schedule 15.12.2011
comment
Не знаю, почему, но установка первого пакета через adb снова помогла, теперь новые версии правильно устанавливаются поверх оригинала. - person Finglish; 16.12.2011

если подпись ключа отличается, у вас может быть эта проблема

person CQM    schedule 15.12.2011

Хотя ОП уже упоминал, что они устанавливали android:versionCode выше, чем предыдущая сборка, и поэтому этот ответ не решит их конкретную проблему, я обнаружил, что в моем случае ответ заключался в том, чтобы увеличить android:versionCode, чтобы оно было выше установленной версии. Только понял это после того, как нашел этот вопрос/

person DanH    schedule 03.11.2015

Вы предполагаете проверить свою логику с той же ключевой подписью с выпуском apk

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=your_package_name &hl=en"))); 

он покажет кнопку обновления в магазине игр.

person Sushant Patekar    schedule 25.10.2016

Иногда старые файлы сборки используются повторно. Вы можете сохранить следующий скрипт:

(1) Добавьте следующий скрипт в ваш package.json:

{
    ...
    "scripts": {
        ...
        "android-install": "npm run android-clean && npm run android-bundle && npm run android-assemble-release && npm run android-uninstall-release && npm run android-adb-install"
    }
} 

(2) Каждый раз, когда вы хотите установить на свое Android-устройство, просто запустите:

npm run android-install

Приведенный выше сценарий не работает, если у вас нет подключенного устройства Android. Если вы хотите просто собрать релиз без установки приложения на устройство, просто удалите две последние команды (&& npm run android-uninstall-release && npm run android-adb-install)

person Aaron    schedule 25.07.2019