I entered the command below in the CMD and the command returned the error below the command.
Command:
phonegap run android --verbose --stacktrace
Error:
ERROR: Failed to launch application on device:
ERROR: Failed to install apk to device: pkg: /data/local/tmp/MainActivity-debug.apk
Failure [INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE]
Solution:
I managed to get rid of the error by uninstalling my app from my device.
Cause:
What probably caused the error is that I updated my Android SDK with SDK Manager.
The problem there, is that you are attempting to install a version of your APK that is LESS than what is already on your device.
Uninstalling will certainly fix that problem for you.
ADB allows more flexibility adb install -r -d <apk path>
, but I am not sure that Phonegap has that functionality.
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:
It turns out that was not the correct error message for downgrading the App version. Infact, it is something completely separate. I found this link that accurately explains the situation:
tl;dr You can't fool the new Android 6 permissions model by first publishing an APK with targetSdk 23 which will grant all permissions runtime and then publishing a new version with targetSdk 22 or less. You'll get an INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE error.
I was working on an app with targetSdk 23 (Android 6 Marshmallow) when it hit me that it possibly could be a security issue with the new Android permission model. Android 6 devices approves all permission on install time and then the user has to approve them whenever the app asks for the permission. What if the user installed the app - auto granting all permissions - and then it didn't ask for using them, and then afterwards the app was updated with the same permissions, but with a lower targetSdk?
I spent a couple minutes creating an app that targeted SDK level 23 and added a fine location permission (ACCESS_FINE_LOCATION). Then I installed and ran the app. The app didn't ask for permission to access the location manager. Then I set the SDK level to 22 and tried to install the app. Luckily it wasn't able to install. I got an error saying Failure [INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE].
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With