r   e   k   l   a   m   a
r   e   k   l   a   m   a

Aktualizacje aplikacji z Google Play znacznie mniejsze, ale za to bardziej obciążające sprzęt

Strona główna AktualnościOPROGRAMOWANIE

Użytkownicy Androida nie raz pewnie widzieli, jak ich smartfony po dłuższej nieobecności w zasięgu domowego Wi-Fi, nagle zaczynają się dławić po powrocie, próbując pobrać przez sklep Play aktualizacje do większości zainstalowanych aplikacji. Generuje to spory ruch sieciowy, praktycznie uniemożliwiając korzystanie w tym czasie z Internetu. Wygląda jednak na to, że Google znalazło efektywniejszy sposób na aktualizowanie oprogramowania, pozwalający zmniejszyć ruch sieciowy nawet o 65%.

Aktualizacje oprogramowania na Androida oczywiście nie polegają na pobieraniu nowych wersji w całości – sklep Play od 2012 roku wykorzystuje mechanizm różnicowy (delta) dla plików APK, tak że dostarczane są jedynie zmiany. W lipcu wprowadzono w tym procesie nowy algorytm bsdiff, który wykorzystując specyficzne własności zmian w skompilowanym kodzie bibliotek, był w stanie zmniejszyć rozmiar pliku różnicowego o średnio 50%.

Zarazem wprowadzono też algorytm delta do plików rozszerzeń APK, wykorzystywanych np. przez duże gry – tutaj pozwoliło to zmniejszyć rozmiar instalacji średnio o 12% i aktualizacji średnio o 65%. Rzecz odczuwalna przez chyba każdego, biorąc pod uwagę to, że niektóre androidowe gry zaczynają mieć rozmiary rzędu kilku gigabajtów.

r   e   k   l   a   m   a

Wraz z wczoraj wprowadzoną nową wersją mechanizmu aktualizacyjnego sklepu Play, udało się uzyskać jeszcze lepsze wyniki. Wykorzystywano w tym celu archive-patcher, projekt tworzony z myślą o efektywnym aktualizowaniu archiwów ZIP, a przecież pliki instalacyjne APK to nic innego, jak właśnie archiwa ZIP o określonej strukturze. Przeprowadza on łatanie plik-po-pliku wewnątrz archiwum, na podstawie łatki, opisującej różnice pomiędzy starą i nową wersją.

Szczegółowe działanie tego algorytmu zostało opisane na blogu deweloperskim Androida. W skrócie można zreasumować to następująco:

  1. Stary i nowy plik zostają zdekompresowane, obliczany jest dla nich plik różnicowy delta za pomocą bsdiff,
  2. Łatka jest wdrażana poprzez zdekompresowanie starego pliku, zastosowanie na nim delty i skompresowanie wyniku do nowego pliku,
  3. Następnie przeprowadzany jest test identyczności powstałego w poprzednim kroku pliku z plikiem wgranym do Google Play.

Efekty zastosowania takiej metody są spektakularne. Aplikacja Netfliksa, o rozmiarze 16,2 MB, została zaktualizowana za pomocą łatki wielkości 1,2 MB (zmniejszenie rozmiarów o 92%). Średnio dla aktualizowanych aplikacji łatki uległy zmniejszeniu o 65%. Tymczasem w wypadku poprzedniej metody, bazującej na bsdiff, udało się zmniejszyć rozmiary łatki maksymalnie o 82%, a średnio o 50%.

Zastosowanie archive-patchera wiąże się jednak z pewnym kosztem, choć nie jest to już koszt Google’a. Aktualizacje z Play będą wymagały większej mocy obliczeniowej, gdyż pliki muszą być zdekompresowane i ponownie skompresowane na urządzeniu. Ocenia się, że na nowoczesnych urządzeniach będzie to trwało około sekundy na megabajt. Z analiz wynika, że jeśli rozmiar łatki zmniejsza się o połowę, to czas jej wdrożenia zostaje podwojony. Jako jednak że to wszystko dzieje się w tle, nie powinno być odczuwalnym obciążeniem dla użytkownika.

Tymczasem samo Google na nowej metodzie zaoszczędzi nawet 6 petabajtów ruchu sieciowego dziennie.

© dobreprogramy
r   e   k   l   a   m   a
r   e   k   l   a   m   a

Komentarze

r   e   k   l   a   m   a
r   e   k   l   a   m   a
Czy wiesz, że używamy cookies (ciasteczek)? Dowiedz się więcej o celu ich używania i zmianach ustawień.
Korzystając ze strony i asystenta pobierania wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.