899
this actually happened rule
(kbin.run)
Be sure to follow the rule before you head out.
Rule: You must post before you leave.
Android doesn't allow you to install an older version of an app over a new version. F-Droid has the UI for it but it doesn't work, the security policy prevents the install.
There's probably a good reasons for that, but I can't think of it other than the flawed reasoning of "it can't be a good idea to roll back an update". I'm sure even Google can imagine a situation where, say, an app update got infected with malware or something like that and it's in everyone's best interest to roll back to the previous version until a clean update arrives. Preventing rollback means the only way to do that is for the user to manually uninstall the app and reinstall the desired version.
Okay, I can think of a possible reason for that policy: it prevents malware from downgrading a target app to a former (official, signed) version which can be exploited. I don't know how realistic this scenario is, though.
You don't need to implement support for rollbacks to handle those "emergency" rollbacks. You could just push a "new" version that's actually the last known good version, and the phone would happily install it.
You can only do this if you have the signing keys. If the store wants to do this for users (say, if the developer is incapacitated somehow) they can't.
Edit: I'm actually not 100% sure if the signing keys are required for changing just the version number, but I assume so
That sounds about right for Google play. That said, the point still stands. If Google wanted to implement such a feature, it could probably be done by onky patching things on their store backend. I'm sure it wouldn't be a trivial change, but still it wouldn't need to touch the OS itself. Probably. As far as the phone is concerned, it would still be disallowing rollbacks as usual.
Apps (almost) always take upgrades into consideration when it comes to migrating data. However they (almost) never take downgrades into consideration.
This is part standard across all software. Migrating forward can already be difficult, but backwards can be impossible, especially if data was lost in the move forward.