Rozdílové aktualizace fungují v Play Storu už od roku 2012. Do té doby uživatelé vždy stahovali kompletní instalátor nahraný vývojářem, přestože v něm mohl opravit jen jeden řádek zdrojového kódu. S rozdílovými updaty se ideálně stáhnou jen ta data, u kterých došlo ke změně. Naposledy Google tento proces vylepšil letos v létě, kdy implementoval algoritmus bsdiff pro tvorbu rozdílových záplat. Přinesl až 50% úsporu dat.
Aktuální novinka bude ještě účinnější. Doposud se totiž rozdílová tabulka tvořila pro celý APK instalátor, což je jen trochu jinak zabalený ZIP využívající kompresi Deflate. A Deflate je sice efektivní a rychlý, jenže má tu nevýhodu, že drobná úprava nekomprimovaného textu (zdrojového kódu) výrazně změní jeho komprimovanou verzi. Jak je vidět na obrázku, když se písmeno I přepsalo na O. Rozdílová záplata je kvůli tomu zbytečně velká.
Google proto vymyslel jinou fintu nazvanou file-by-file patch. Při ní se porovnávají změny na nekomprimovaných datech (stále s využitím metody bsdiff). Google na svém serveru připraví rozdílový balíček tak, že nejdříve rozbalí původní i nový soubor APK a porovná data. Vytvoří rozdílovou záplatu a tu zašle do zařízení uživatele. U něj se rozbalí původní APK (je tam pořád uložené) i zaslaná rozdílová tabulka, záplata se aplikuje na původní data a zabalí se do nového APK. Takový soubor pak bude stejný jako ten, který na servery Googlu nahrál vývojář. No a pak už se instaluje.
Aktualizace v Play Storu budou menší
Původní metoda nasazená v létě znamenala v průměru 47% úsporu dat oproti tomu, kdyby uživatelé museli stahovat celý původní instalátor APK. File-by-file patch je v průměru úspornější o 65 %. V některých případech jsou rozdílové soubory o více než 90 % menší než původní soubor APK.
Jenže rozbalování, aplikace patche, zabalování a následná instalace je výpočetně (a tedy i časově) náročnější. Na moderních zařízení prý rekomprese jede rychlostí asi 1 MB za sekundu, na starších a pomalejších to bude mnohem horší. Google zjistil, že pokud je záplata o polovinu menší než původní soubor, celková instalace zabere dvakrát tolik času. File-by-file patching proto zatím bude fungovat jen u automaticky aktualizovaných aplikací.
Zdroj: Google