Почему размеры обновлений / патчей для приложений Android похожи на файлы настроек?

Я просто задавался вопросом, когда пытаюсь обновить PlayStore.

Как правило, скажем, для Windows, когда он обновляется, загружает файлы и исправляет их. С точки зрения размера они значительно малы по сравнению с его настройкой, которая составляет около 3,5 ГБ.

Почему он не применим для приложений ANDROID? Например, любое обновление WhatsApp почти эквивалентно исходному установочному файлу (~ 18 МБ).

Хотя Play Store называет их обновлениями, вы снова загружаете все приложение для Android. В некотором смысле, это все еще обновление, потому что вы действительно обновляетесь до новой версии apk, но не совсем так, как вам хотелось бы. Это налог на вашу пропускную способность, но это легко.

Тем не менее, настройки вашего приложения (общие настройки) и данные (базы данных SQLite или пользовательские файлы) выдержат этот процесс обновления / установки, который не будет иметь места, если вы вручную удалите и установите новую версию приложения снова.

В тех случаях, когда схема базы данных приложения развивается между двумя версиями, Android уведомляет приложение при запуске, что оно не было новой установкой, вызвав метод жизненного цикла onUpgrade() где приложение имеет возможность обновить свои данные, оставшиеся после Предыдущей версии.

Когда вы сравниваете это с Windows, как ОС, так и сервер обновлений от Microsoft, и они должны были работать вместе, чтобы выяснить, что нужно нажать (.dll, .ini, .sys и т. Д.), Обновить формат пакета / сжатие и Последствия для безопасности (что-то вроде шифрования для предотвращения вторжения вредоносного ПО любым перехватчиком трафика).

Никакой такой стандартный механизм обновления не был доступен Google для Play Store, см. Обновление, и я считаю, что так происходит с каждым другим магазином приложений. Очевидно, что разработчики не могут запускать их самостоятельно, так как обновления обрабатываются Google как на устройстве, так и на стороне сервера.

Но разработчики, конечно же, не недовольны этим. Гораздо удобнее протестировать новый apk, увидеть, как он работает и загружает то же самое, а не возится с тем, какие изменения вызывают и ломают приложение, если вы что-то пропустите. В любом случае пропускная способность дешевая.


Недавно я обнаружил, что в Google I / O 2012 Google объявила, что они работают над технологией Smart Updates с использованием некоторого алгоритма дельта-кодирования . Идея заключалась в том, чтобы вычислить DIFF между двумя APK (вроде как для текста между двумя файлами исходного кода), создать патч на стороне сервера и только отправить его по кабелю.

Эта функция появилась в прямом эфире в Play Store в том же году, как сообщается в AndroidPolice и TechCrunch .

Разработчики, Google сказал в I / O, не придется ничего делать, чтобы включить эту функцию, и, согласно словам людей в Android Police, эта функция спокойно прошла вживую прошлой ночью или рано утром.

Вы можете увидеть его в действии в этом видео. Обратите внимание, как приложения начинают установку, когда индикатор выполнения достигает всего 40-50%. Это абсолютно потрясающе, потому что не только это экономит терабайты в терабайтах, но и делает его чистым серверным подходом, и разработчикам не нужно ничего возиться. Возможно, именно по этой причине он не находит упоминания на сайте разработчиков Android, поэтому требуется время, чтобы его обнаружили.


С учетом сказанного мой личный опыт, похоже, совпадает с вашим. Я вижу, что большинство моих обновлений приложений загружают почти все приложение. Может быть, это потому, что я не очень часто загружаюсь. Для меня нетрудно пропустить несколько незначительных изменений, и, возможно, приложение слишком сильно изменилось, чтобы получить выгоды любого размера из созданного патча.

Нет ничего похожего на «обновление» для Android-приложения. Это всегда приложение. Он называется обновлением, потому что это новая версия приложения, которое в настоящее время установлено на устройстве.

Но когда это «обновление», все приложение не загружается полностью. На протяжении многих лет Google Play загружает только часть приложения и исправляет установленное приложение с той разницей. Таким образом, в случае 20MiB Google Play может загружать всего несколько мегабайт, чтобы переконвертировать новую версию в телефон. Google вызывает Smart App Updates или что-то в этом роде.