Android apps are designed to be updated to either the newest version, or inside a range of acceptable versions in the case of apps that force you to upgrade before allowing you to continue. The reason that you can always upgrade but hardly downgrade is because of breaking changes that would affect resources the app uses. For example, say you updated from version 1.0 to 2.0, the app’s local storage schema underwent changes that make it incompatible with old versions of the app. If you downgrade back to 1.0, the database is effectively broken. It’s often these sorts of changes that make downgrading packages undesirable for the average user.
Other reasons could be security compliance, critical bug fixes, or changing target API to a newer target as part of Play Store guidelines (this is actually going on right now for app developers)
We programmers design updates to go only one way intentionally.
To get from version A to version B, you press update. This downloads the new application that replaces the original executable, keeping all of its data intact. When you open the application, it knows that it needs to transform the version A data into version B (otherwise, we can’t read it!)
So, we (programmers) write some unique code just to handle going from A to B on first run. It only needs to run once, but it needs to be run before we can use our data. An updated application might use newer features, have a modified database structures, or include resource/permission changes – all of these require special handling.
The reason you can’t go backwards is because we didn’t write the unique code required to go from version B to A. And, if you think about it, there is *no way* we could have. How does version A know how to transform from version B, if version B didn’t exist for another 6 months?
The only way to go backwards, is to delete the application completely and install fresh. Although more complex, this is true for operating systems on mobile/pc/mac too.
The apks/aab or android installers are tied up to Google Play mostly (or other trusted app stores you have). So archives of versions old or new are there. Its relatively easy to install them given you have access and know the version you are looking for. So the troubling part is the access, since usually only the makers or publishers of these apps are the one’s who have access.
The only thing Google Play displays is the latest version of the app, if you are a user, you won’t be able to see the older versions.
You might get other sources of the said app version publicly but its hard to know whether its tampered or not.
Imagine you have a nice little square table in your room. The table is often updated with nifty little things by your parents. They put a nice cover on it once, they fixed the leg when it was unstable, and they recently painted it blue!
Thing is, you preferred it’s natural wood color, so you ask your parents to turn it back to how it was. But the current version of the table is blue, can’t do anything about it.
You do have a copy of an earlier version of the table though, someone else with the same table made a copy and gave it to you. There are two options:
The table is not too senstive to this so you just remove the blue table and put the wood table in your room, and as long as your parents don’t come inside and see it, they won’t paint it blue to get it up to date.
This is equivalent to installing an earlier version of an offline program, no need to root your phone it just works from an apk.
The other option is if the previous version of the table has something that your parents don’t allow in the room anymore, of if installing this modified version of the table requires some handywork usually not allowed in the room. They won’t let you put it in the room and it won’t work well if you force it in. So you install a lock in your room to keep your parents out from messing with your table, now you have permission to do anything you want in the room.
This is rooting your phone to install an app that needs some deeper functionality or access to install and function.
Rooting is essentially the process of bypassing some of the restrictions placed for the user, allowing you to use the hardware and opersting system for more than the default allows. This allows you to modify and homebrew apps, which is usually what you need to do when rolling back the version of an app to a previous one.
It isn’t a physical limitation as much as a design one. If app stores kept backups of previous versions they could allow you to download and install older versions of apps, but they don’t do this because storing it is unnecessary and most apps are connected to the internet anyway, meaning you will need the latest version to use the official version of that app.
Latest Answers