Dlaczego aktualizacje aplikacji pobierają całą aplikację zamiast tylko „aktualizacji”?

10

Wydaje mi się dość dziwne, że do aktualizacji aplikacji na Androida (a nawet iOS) pobierana jest cała aplikacja zamiast samych „Aktualizacji”.

Uważam to za dziwne, ponieważ w systemie Windows podczas aktualizacji aplikacji pobierane są tylko pliki aktualizacji - nie cała aplikacja - co jest bardziej praktyczne, ponieważ oszczędza zarówno czas, jak i zużycie danych.

Wydawałoby się to trywialne dla większości, ale kiedy trzeba pobrać ogromną aplikację tylko dla drobnego dodania funkcji / naprawy błędu, staje się ona prawdziwą PITA.

Czy ktoś ma wyjaśnienie, dlaczego ten model został wdrożony?

Gh0sT
źródło

Odpowiedzi:

13

O ile wiem, pobiera tylko aktualizacje (zwane „deltą”) na Jellybean 4.1 i nowszych. Oczywiście pierwsza instalacja jest pełną aplikacją, ale aktualizacje pobierają tylko dane, które zmieniły się w stosunku do aktualnie zainstalowanej wersji (tj. Jej „delta”). Podczas aktualizacji większości aplikacji nie zobaczysz nic innego, nadal będzie wyglądać, jakby pobierała pełną aplikację, ale w niektórych większych aplikacjach zobaczysz, czy „przeskakujesz” części pobierania, co oznacza, że ​​właśnie dostaje deltę.

Zarówno Engadget, jak i AndroidCentral zawierają artykuły wskazujące, że sklep Play udostępnia aktualizacje delta

bmdixon
źródło
1
Jak „duża” jest większa aplikacja? Mam na myśli, że wciąż muszę pobrać cały Temple Run 2, żeby mieć Usaina Bolta! W każdym razie dzięki za udostępnienie artykułów.
Gh0sT,
Nie jestem pewny. Wiem, że w przypadku czegoś takiego jak Asphalt 6 (który ma co najmniej 1 GB) pobrał tylko zmiany w przeszłości. Być może dotyczy to tylko dużych aktualizacji, a może nie było możliwe wygenerowanie delty dla aktualizacja Temple Run 2 z jakiegoś powodu? Mogą tworzyć deltę tylko wtedy, gdy zmieni się mniej niż określony procent. (NB. Wszystko to tylko moje myśli)
bmdixon,
Delta nie jest natychmiastowa. Jeśli pobierzesz aktualizację zaraz po jej przesłaniu do sklepu Play, delta może nie zostać na razie wygenerowana. (tylko przypuszczenie)
Matthieu Harlé
4

Jako programista Androida pomyślałem o tym samym, co najmniej frustrujące było to, że pewnego razu zapomniałem zmienić jeden wiersz kodu i wyszło to z błędem tego jednego wiersza, co spowodowało, że aplikacja wypluła z pamięci instrukcje dziennika i dobrze.

To pytanie zostało zadane na SO, ale jest również na ten temat i myślę, że to pytanie powinno zostać.

SO Pytanie: /programming/18045290/for-mobile-app-updates-why-does-the-entire-app-need-to-be-downloaded-again

Jako programista Androida, musiałbym zgodzić się ze sposobem, w jaki oprogramowanie jest pakowane. Każda aplikacja na Androida jest pakowana w skompresowany plik o nazwie an .apk. Ten plik zawiera wszystkie kody, pliki układów i obrazy użyte do uruchomienia aplikacji. Trochę trudno jest zaktualizować tylko część pliku, szczególnie gdy jest on skompresowany, a jeśli programista ma włączone funkcje bezpieczeństwa, takie jak ProGuard, wdrożenie poprawki byłoby prawie niemożliwe.

Jestem pewien, że Google miał również pewne powody bezpieczeństwa, aby nie zezwalać na łatki. Poprawki kodu pozostawiają nieoczekiwane dziury w zabezpieczeniach i luki w zabezpieczeniach.

Jan
źródło
2
Aktualizacje AFAIK delta zostały wprowadzone do GPlay około pół roku temu. I tak, istnieje również coś w rodzaju różnic binarnych. Zasadniczo .apkmożna go również rozpakować na serwerach Google, aby porównać wersje i utworzyć niezbędne delty. Chociaż nie wiem, jak to się właściwie robi.
Izzy
Jestem tym bardzo zainteresowany, czy musisz się na to zdecydować jako programista, czy też Google zarządza tym za Ciebie?
John,
1
@John Google robi to automatycznie, programista nie musi podejmować żadnych działań.
onik
-1

Zasadniczo plik pakietu aplikacji dla systemu Android (* .apk) jest tworzony po opublikowaniu kodu aplikacji, plik ten jest tworzony po kompilacji i kompilacji oraz z procesu konwersji DALVIK,

Ten plik zawiera wszystkie zasoby, tj. Obrazy, audio, układy, klasy,

A jeśli chodzi o system Windows. Framework i Linux działają zarówno w różny sposób ...

Jeśli chcesz zastąpić tylko określony kod, możesz to zrobić w Androidzie, ale ze względów bezpieczeństwa musisz ponownie podpisać tę aplikację.

To, co robi DALVIK, jest procesem nieodwracalnym, więc jeśli dodana zostanie nowa funkcja, to w jaki sposób stara wersja uzyska do niej dostęp, nie wiedząc o tym?

Dlatego wymaga zaktualizowania całej aplikacji, aby działała i działała poprawnie.

Amit Modak
źródło