You’ve got it backwards.
Everyone who wants to sell computer hardware (except Apple) makes hardware that Windows can be loaded onto.
Nobody will buy a phone with no software on it, so the phone people can save valuable storage space by putting the version of Android that they choose onto it. Supporting different versions isn’t someting people will pay more for, so they don’t do it.
There is a very wide range of hardware in mobile devices, and including support for every possibility would result in system images that are very large in size and perform less than optimally.
The need to include drivers as part of the system image and not an user installed component further complicates this issue.
Windows doesn’t actually run on *any* hardware…it (mostly) only runs on systems with an X86 / X64 based processors, though it has recently been modified to run on other processors like the ARM platform which is the type of processor architecture found in Android and Apple Phones.
While it may seem like Windows runs an anything…the hardware in question, *PC’s*, are built with an X86 / X64 based CPU (central processing unit) the same way most smart phones are built with an ARM based CPU.
Why so many ROMs?…Each phone platform (think make/model) is somewhat unique and generally requires specific instructions to make the hardware work correctly. Different versions of very similar phones use different hardware components and everyone of those hardware components needs a set of instructions (*like the drivers you use on your PC to make a printer or a video card work*) made for that specific piece of hardware. The ROM you download for your android is built to address the specific needs of that specific handset (phone). In the windows ecosystem, a lot of the hardware is modular, meaning you can swap one thing (like a video card) out for another in which case *YOU* would update the driver files the system uses to communicate with any hardware components you add to the system. Smart Phones are mostly no modular and can only be used with the same internal hardware they ship with. This means all the ‘drivers’ for the individual hardware components (like the Bluetooth chip, or the display driver) have to be baked into the ROM so they they are there when you install a new or different ROM. There are some similarities between Phones and PC’s when dealing with various components that are built into the PC’s motherboard. Any components built in to the motherboard generally require specific drivers that must come from the maker of the board or PC.
Hope this helps!
Ahh.. well.
Windows is a mostly an x86 OS, meaning it runs on CPUs that have the x86 Architecture best, x86_64 is x86 but with 64 bits instead of 32, it’s the more modern version of this arhitecture.
x86 and x86-64 are found in most PCs nowadays, so Microsoft made Windows work for these.
Now, Android is a Linux OS, a heavily modified one, yes, but that’s beyond the point.
Android being Linux has a significant meaning in this context, because Linux has been made to work on pretty much all CPU architectures known to mankind, including ARM(Advanced RISC Machine, where RISC is another arhitecture and ARM is simply an extension of it, RISC is Reduced Instruction Set Computer).
Arm is used in most phones and tablets, because it’s more efficient in those, it has had many versions, most phones now run on aarch64, aka ARMv8.
ARMv8 is different to x86 and its 64 bit extension, they’re different languages for each CPU type.
About ROMs now, here’s the thing:
All PCs have a BIOS/UEFI system which loads software from the internal storage or from an USB Stick, this allows you to plug a stick and install whatever you like.
Phones however do not have such a system, they have a main bootloader, the bootloader is a program that loads the OS, and a second bootloader, provided by the OS.
The main bootloader only loads whatever it can find and it’s dumb, that’s why we need two. It’s also built into the SoC, a chip that contains memory, a graphic chip and the actual CPU)
There was a great effort to NOT standardize a system for PCs, without UEFI everyone could make computer software proprietary which would help the corporations, this however was achieved with phones, where each brand has their own variation of Android, purposely made not to work with other phones.
There’s also the problem of drivers, drivers ensure proper communication between the CPU and other components, drivers are ran by the CPU so they also need to be rewritten for the specific instruction set/architecture of the CPU.
It’s a very complex thing that you can’t understand in a day, and no one expects anyone to do so.
Windows *can’t* run on “any” hardware easily. What’s different is there are LOTS of people making hardware that can run Windows. Some of this does come down to decisions made by both OSes, though.
When Microsoft started making Windows, there were a LOT of competitors. The popular consumer OS was called “DOS”, but there were lots of compatibility issues. If you were looking to buy a sound card or other hardware you had to make sure you knew it was compatible with your OS and maybe do some tinkering.
With Windows, Microsoft tried to fix that. They tried to make the concept of “drivers”, the software that interacts with hardware, easier for end users. The promise was no matter whether you bought a Tandy or an IBM, if you ran Windows you could install the driver for your sound card and it would just work. This was so appealing, it also sort of motivated the people making computers to focus on building with CPU and memory architectures that worked well with Windows because people wanted to run Windows. Having more similar hardware made it easier for drivers to be consistent, etc.
Basically, before Microsoft did this all computers were like hot rods. They were built out of similar parts but usually had a mishmash of customizations that required the user to do a lot of work to make their OS understand what was going on. Microsoft helped shift this market into one where computers were like the Honda Civic, a single platform with a large ecosystem of interchangeable parts.
So Windows is extremely flexible and can come with gigabytes of built-in drivers to help it handle even very obscure hardware. The one thing it’s bad at is if you have a weird CPU. Most PCs are using a CPU architecture called “x86” or “x64”. Windows has been designed for these since the 80s. But tablets and smartphones tend to use an architecture called “ARM”. Windows has only been trying to run on that since about 2010, and it’s still a fairly obscure case. Not all software can run on Windows ARM. If you have something even more obscure, like the stuff Arduinos run, Windows won’t be able to run at all because they lack a lot of features it needs.
Android was built different. It’s intended for mobile devices. That mean it focuses very heavy on ARM CPUs. While Google has made it flexible, they focus mainly on making it run on the things they use inside their phones. It’s open source, so Samsung can pick it up and add the code needed to make it work with their stuff if they choose differently. But Samsung isn’t financially motivated to be so flexible they help LG make Android run on *their* phones. And Google isn’t really committed to Android being as general-purpose as Windows became. And since mobile devices are more limited than PCs, Android can’t come saddled with gigabytes of drivers for every possible use case. It works best if the person who makes a device trims it down to have just what it needs.
—
So the real TL;DR:
* Microsoft WANTS Windows to run on as many things as possible. They go out of their way to help everyone write the code needed for compatibility. Since PCs have a lot of space they can include a TON of “extra” stuff so installing even weird hardware might be a no-problem experience. That makes every copy of Windows kind of like a putty that can take the shape it needs to “fit” your computer.
* Android is focused on much smaller devices and performance is more important. It can’t afford “extra” code. You can’t generally update the parts in your phone anyway so it doesn’t make sense for each copy to come with things that will never be needed. That means each copy of Android is more like a rock: it fits in one place and one place only, and if you install a copy on a phone it wasn’t designed for it may not even know how to finish turning the thing on.
Most PC hardware is essentially the same, and therefore Windows (and Linux/MacOS) were developed to run on that hardware, while said hardware symbiotically grew to stay compatible with those operating systems (for the most part anyways).
Phone hardware is a lot more varied, and due to the phone market being much more competitive, each manufacturer is constantly trying to one-up each-other, and aren’t afraid to modify hardware to break compatibility with stock Android if it allows them to add more features/performance. The extra money they make from those features/performance justifies hiring some developers to make a slightly modified version of Android to run on that hardware.
Phone manufacturers are more able to lock down things because they want more control, and to direct you to services and apps they want you to use. They want to lock you to specific carriers, they want to prevent you from using hotspot data freely, keep you from playing unapproved media and enforce DRM.
With Apple setting the expectation for how awful an OS can be, they have an easy opportunity to control everything and lock things down. Consumers expect to have no control.
Some manufacturers like Samsung incorporate their own components so they can vertically integrate their own drivers and not share them with anyone else. Things like this mean Android won’t actually support the OS without the necessary drivers and changes.
Android Open Source project is actually kinda barebones which makes it flexible but means that every manufacturer needs to do their own software updates instead of having a usable product distributable from Google.
It is possible. But nobody cares and companies are very interested in making money. So it’s not going to happen.
This is less about Windows and Android and more about the hardware each one runs on.
Most phones are ARM based and most Windows deployments are on x86. tl;dr of it is that the ARM architecture requires separate ROMs for each combination of hardware by design. x86, by design, allows you to make the OS more modular and swap out needed pieces more easily.
Windows running on ARM has the same problem Android has. It has to be compiled for the specific mix of hardware. Android’s core is Linux and that can run on x86 without requiring separate ROMs. There’s nothing particularly nefarious about ARM’s decision to design their architecture this way. It’s one of the mechanisms that allows ARM to, in general, be more power efficient than x86.
Latest Answers