@raychan @ReactivateMe347
Die Systempartition(en) unter Android sind read-only images und werden vom Gerätehersteller signiert. Der Bootloader überprüft diese Signatur. Ändert man auch nur ein einziges Byte bootet das Gerät nicht mehr mit "No valid operating system found." Ist gleichzeitig der Bootloader locked ist das Gerät bricked und kann auf den Müll.
Darum darf in Stock Android einzig der Updater diese Partitionen beschreiben weil der aus dem Update natürlich auch eine neue, passende Signatur vom Hersteller bekommt.
Speicherplatz gewinnen kann man auch nicht: In modernem Android (Geräte die mit 10+ erschienen afaik) hat das Gerät eine GPT Partitionstabelle mit 2 Partitionen: Die Super-Partition und
userdata
(plus diverse kleinere Partitionen für bootloader, modem firmware & Co). In der Super-Partition verschachtelt sind alle System-Partitionen (i.d.R. doppelt für A/B Updates). Diese haben in der Tat eine variable Größe damit der Hersteller bei Updates mehr Flexibilität hat.
userdata
enthält alle Nutzer-Einstellungen, Apps und App-Updates, den "Internen Speicher" u.s.w. Bei einem Werkreset wird einzig
userdata
formatiert.
Sowohl die Super-Partition als auch
userdata
haben aber eine feste Größe die bei der Herstellung des Geräts festgelegt wird. Updates ändern die Partitionierung nie.
Vorinstallierte Apps liegen in einer der Systempartitionen damit das Gerät nach einem Werkreset auch wirklich wieder dem Auslieferungszustand entspricht. Kommt für eine vorinstallierte App aber eine neue Version aus einem App-Store rein wird dieses in die
userdata
-Partition installiert. Geht nicht anders weil die Systempartitionen ja nicht modifiziert werden können. Diese Updates kann man löschen und gewinnt dann in der Tat Speicherplatz in der relevanten Partition. Dazu zeigen viele Androids in der App-Info aber auch den Knopf
Updates deinstallieren
zusätzlich zum
Deaktivieren
.
Was
adb shell pm uninstall
anders tut kann ich nicht sagen aber
adb
ist ja in erster Linie als Werkzeug für Entwickler gedacht und es ist denkbar dass es irgendwo ein Flag hinterlässt um eine App-ID zu "verbrennen" als hätte es sie nie auf dem Gerät gegeben, ähnlich wie ein
chicken bit in der Hardware-Entwicklung.