Ошибка [INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE]

Я ввел команду ниже в CMD, и команда вернула ошибку ниже команды.

Команда:

phonegap run android --verbose --stacktrace

Ошибка:

ОШИБКА: Не удалось запустить приложение на устройстве:

ОШИБКА: Не удалось установить apk на устройство: pkg:/data/local/tmp/MainActivity-debug.apk

Отказ [INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE]

Ответ 1

Проблема в том, что вы пытаетесь установить версию своего APK, которая меньше, чем на вашем устройстве.

Деинсталляция, безусловно, устранит эту проблему для вас.

ADB обеспечивает большую гибкость adb install -r -d <apk path>, но я не уверен, что Phonegap имеет эту функциональность.

adb install [-lrtsdg] <file>
   - push this package file to the device and install it
     (-l: forward lock application)
     (-r: replace existing application)
     (-t: allow test packages)
     (-s: install application on sdcard)
     (-d: allow version code downgrade)
     (-g: grant all runtime permissions)

Update:

Оказывается, это было неправильное сообщение об ошибке для понижения версии приложения. Infact, это нечто совершенно отдельное. я нашел эту ссылку, которая точно объясняет ситуацию:

tl; dr Вы не можете обмануть новую модель разрешений Android 6, сначала публикация APK с targetSdk 23, который предоставит все разрешения а затем опубликовать новую версию с targetSdk 22 или меньше. Вы получите сообщение об ошибке INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE.

Я работал над приложением с targetSdk 23 (Android 6 Marshmallow), когда он ударил меня, что это может быть проблема безопасности с новым Модель разрешения Android. Устройства Android 6 одобряют все разрешения на время установки, а затем пользователь должен их одобрять всякий раз, когда приложение запрашивает разрешение. Что делать, если пользователь установил приложение - auto предоставляя все разрешения - и затем он не просил их использовать, и затем после этого приложение было обновлено с теми же разрешениями, но с более низким targetSdk?

Я потратил пару минут на создание приложения, которое предназначалось для SDK уровня 23 и добавлено разрешение на точное местоположение (ACCESS_FINE_LOCATION). Затем я установил и запустил приложение. Приложение не запрашивало разрешения на доступ менеджер местоположения. Затем я установил уровень SDK на 22 и попытался установите приложение. К счастью, он не смог установить. Я получил ошибку говоря "Неудача" [INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE].

Ответ 2

Решение:

Мне удалось избавиться от этой ошибки, удалив мое приложение с моего устройства.

Причина:

Вероятно, причина в том, что я обновил свой Android SDK с помощью SDK Manager.

Ответ 3

Я получил эту ошибку в VS2015 с помощью TACO и отладки для Android с использованием определенного профиля эмулятора: VS Emulator 10.1 "Marshmallow (6.0.0) XHDPI Tablet. Проект, над которым я работал, был установлен как приложение для этого конкретного профиля, Я использовал его для отладки.Я решил проблему, удалив и переустановив этот конкретный профиль: Инструменты → Visual Studio Emulator для Android → Удалить профиль. Переустановленный профиль больше не содержал мое приложение, и ошибка ушла. Думаю, эмулятор эквивалентен удалению приложения с удаленного устройства.