Warum laden App-Updates die gesamte App herunter und nicht nur „Updates“?

Ich finde es ziemlich seltsam, dass zum Aktualisieren einer App in Android (oder sogar iOS) die gesamte App heruntergeladen wird, anstatt nur die eigentlichen "Updates".

Der Grund, warum ich das seltsam finde, ist, dass in Windows beim Aktualisieren einer App nur die Update-Dateien heruntergeladen werden – nicht die gesamte App – was praktischer ist, da es sowohl Zeit als auch Datenverbrauch spart.

Dies würde den meisten trivial erscheinen, aber wenn Sie eine riesige App nur für eine winzige Funktionserweiterung/Fehlerbehebung herunterladen müssen, wird sie zu einem echten PITA.

Hat jemand eine Erklärung, warum dieses Modell implementiert wurde?

Antworten (3)

Soweit ich weiß, lädt es nur die Updates (als "Delta" bezeichnet) auf Jellybean 4.1 und höher herunter. Offensichtlich ist die Erstinstallation die vollständige App, aber Updates laden nur die Daten herunter, die sich gegenüber der aktuell installierten Version geändert haben (dh das „Delta“ davon). Sie werden nichts anderes sehen, wenn Sie die meisten Apps aktualisieren, es sieht immer noch so aus, als würde die vollständige App heruntergeladen, aber bei einigen größeren Apps werden Sie sehen, ob Teile des Downloads „springen“, was darauf hinweist, dass es nur das Delta erhält.

Engadget und AndroidCentral haben beide Artikel, die darauf hinweisen, dass der Play Store Delta-Updates bereitstellt

Wie „groß“ ist die größere App? Ich meine, ich muss immer noch das gesamte Temple Run 2 herunterladen, nur um Usain Bolt zu haben! Trotzdem danke für das Teilen der Artikel.
Ich bin mir nicht sicher. Ich weiß, dass für etwas wie Asphalt 6 (das mindestens 1 GB groß ist) nur die Änderungen in der Vergangenheit heruntergeladen wurden. Es kann sein, dass es nur auf große Updates angewendet wird, oder vielleicht war es nicht möglich, das Delta für zu generieren das Temple Run 2-Update aus irgendeinem Grund? Sie dürfen das Delta nur erstellen, wenn sich weniger als ein bestimmter Prozentsatz geändert hat. (NB. All dies sind nur meine Gedanken)
Delta sind nicht augenblicklich. Wenn Sie das Update direkt herunterladen, nachdem es in den Play Store gepusht wurde, wurde Delta möglicherweise noch nicht generiert. (nur eine Vermutung)

Als Android-Entwickler dachte ich dasselbe, es war gelinde gesagt frustrierend, weil ich einmal vergessen hatte, eine Codezeile zu ändern, und es ging mit dieser einen Zeile falsch aus, was dazu führte, dass die App Log-Anweisungen ausspuckte rechts.

Diese Frage wurde auf SO gestellt, aber sie ist auch hier ein Thema und ich denke, diese Frage sollte bleiben.

SO Frage: https://stackoverflow.com/questions/18045290/for-mobile-app-updates-why-does-the-entire-app-need-to-be-downloaded-again

Als Android-Entwickler müsste ich vermuten, wie die Software verpackt ist. Jede Android-App wird in eine komprimierte Datei namens .apk. Diese Datei enthält den gesamten Code, Layoutdateien und Bilder, die für die Funktion der App verwendet werden. Es ist ziemlich schwierig, nur einen Teil einer Datei zu aktualisieren, insbesondere wenn sie komprimiert ist, und wenn der Entwickler Sicherheitsfunktionen wie ProGuard aktiviert hat, wäre es nahezu unmöglich, einen Patch zu implementieren.

Ich bin mir sicher, dass Google auch einige Sicherheitsgründe hatte, Patches nicht zuzulassen. Code-Patches neigen dazu, unerwartete Sicherheitslücken und Schwachstellen zu hinterlassen.

AFAIK Delta-Updates wurden vor etwa einem halben Jahr in GPlay eingeführt. Und ja, es gibt auch so etwas wie binäre Diffs. Grundsätzlich .apkkönnten die auch einfach auf Google-Servern entpackt werden, um Versionen zu vergleichen und die notwendigen Deltas zu erstellen. Obwohl ich nicht weiß, wie es wirklich gemacht wird.
Das interessiert mich jetzt sehr, müssen Sie sich als Entwickler dafür entscheiden oder übernimmt Google das für Sie?
@John Google erledigt dies automatisch, der Entwickler muss keine Maßnahmen ergreifen.

Grundsätzlich wird die Android-Anwendungspaketdatei (*.apk) erstellt, nachdem der App-Code zur Veröffentlichung bereit ist. Diese Datei wird nach dem Kompilieren und Erstellen und aus dem DALVIK-Konvertierungsprozess erstellt.

Diese Datei enthält alle Ressourcen, dh Ihre Bilder, Audiodateien, Layouts, Klassen,

Und soweit es Windows betrifft, funktionieren das .NET-Framework und das Linux-Framework auf unterschiedliche Weise ...

Wenn Sie nur einen bestimmten Code von ersetzen möchten, können Sie dies in Android tun, aber aus Sicherheitsgründen müssen Sie diese App erneut signieren.

Was DALVIK macht, ist ein irreversibler Prozess. Wenn also eine neue Funktion hinzugefügt wird, wie wird die alte Version darauf zugreifen, ohne es zu wissen??

Aus diesem Grund muss die gesamte App aktualisiert werden, damit sie ordnungsgemäß funktioniert und funktioniert.