Zur Erklärung, wieso das mit den Updates bei Android nicht so leicht läuft: Auf dem PC ist es so, das es ein standardisiertes System gibt, wie die Rechner hochfahren und mit der Hardware kommunizieren. Da hatte man den Bios, jetzt hat man UEFI, aber das ist dennoch ein Baukastensystem, wo jeder auch noch sein Bauteil hinzufügen kann.
Dasselbe gilt dafür, wie Windows mit der Hardware kommuniziert. Man hat einmal Windows, und dann die unterschiedlichen Treiber. Windows wird mit ein paar grundsätzlichen Treibern geliefert (deswegen ist es z.B. bei einer Grafikkarte so, dass bevor man die Treiber installiert, wird alles in einer ganz niedrigen Auflösung angezeigt - das ist der mitgelieferte Treiber, der eben nicht so viel kann), damit man das System in Schwung bringen kann, und für das Meiste werden dann die Treiber-"Module" verwendet. Wenn Windows ein Upgrade macht, wird geschaut, dass die Schnittstelle zwischen Windows und den Treibern möglich gleich bleibt, und damit keine Probleme entstehen (obwohl das in der letzten Zeit auch nicht so toll gelaufen ist).
In Linux ist es so, dass die meisten Treiber im Kernel mitgeliefert werden, und dann können weitere Firmen trotzdem noch eigene Treibermodule daran anschließen - ist allerdings eher die Ausnahme als die Regel (NVIDIA ist so eine Ausnahme). In der Regel ist wie gesagt der ganze Code für die Treiber im Kernel und open source. Damit wird gleich bei einer Kerneländerung darauf geachtet, dass die ganzen Treiber noch kompatibel bleiben, und wenn etwas nicht passen sollte, kann auch der Treibercode angepasst werden (ist ja alles open source).
In Android ist es dagegen so, dass dort nicht der Standard-Kernel von Linux verwendet wird. Dafür werden die Treiber geschrieben vom Hersteller (z.B. Qualcomm), diese werden allerdings nicht veröffentlicht. Stattdessen werden die Treiber kompiliert gegen der entsprechenden Android-Kernel-Version. Das Resultat ist ein "binary blob", was verwendet wird um den Android-Kernel für das einzelne Handy gesamthaft zu kompilieren. Erstmal alles gut, der Treiber wurde für das entsprechende Android-Kernel geschrieben, da passt alles. Dann kommt aber ein neuer Android-Kernel, aber man kann jetzt nur auf gut Glück versuchen, den mit dem vorherigen "binary blobs" zu kompilieren, was aber nicht funktionieren muss. Und wenn es dann nicht funktioniert, weiß man kaum wieso, weil diese "binary blobs" so ziemlich schwarze Boxen sind. Heißt, man muss raten, "was genau könnte der Grund sein, wieso das nicht funktioniert?", und auf der Basis irgendwie versuchen, das Ganze zum Funktionieren zu bringen.
Wieso sind die Systeme dann anders? Ganz einfach: PCs stammen aus einer Zeit, wo es noch normal war, dass man den Rechner gekauft hat, und ein Betriebssystem dazu separat. Da musste das Betriebssystem von Grund auf mit unterschiedlicher Hardware klarkommen, und die Hardware mit unterschiedlichen Betriebssystemen. Das hat sich dann einfach weiterentwickelt. Android dagegen ist ein Betriebssystem, was ursprünglich für Digitalkameras erstellt wurden ist, und der Linux-Kernel wurde einfach verwendet, damit sie den Kernel nicht neu schreiben mussten. Und na ja, wer will denn auf der Digitalkamera ständig Updates installieren, und wozu würde man so etwas brauchen. Da würde auch keiner erst auf der Kamera ein Betriebssystem und dann Treiber installieren wollen.
Wo Android dann auch auf Handys gelandet ist, hat Google erstmal gemeint, "ach, das mit dem Updaten und so können doch die Hersteller übernehmen, wir kümmern uns um das Betriebssystem, dann kommt es beim Nutzer als Gesamtpacket vom Hersteller an". Außerdem gab es das große Negativbeispiel von Apple in der Hinsicht, da sah es bei Android schon sehr gut aus, weil das alles offen und open source war. In der Zwischenzeit hatte Google die unterschiedlichste Ideen, wie sie die Hersteller dazu bringen konnten, die Updates auch durchzuführen (Versprechen von Unternehmen einzuholen, Firmen beschämen, usw.), hat aber nichts wirklich geklappt. Jetzt ist Google mit Project Treble auf dem Weg das zu modularisieren, sodass es eben ähnlicher ist wie Windows, mal schauen, wie das läuft. Ausgeliefert wird aber Android trotzdem noch als Gesamtpaket und nicht als Betriebssystem + Treiber, bzw. es ist so nicht möglich Android als Betriebssystem + Treiber auszuliefern, weil Android dafür nicht aufgebaut ist.