¿Por qué las actualizaciones de aplicaciones descargan la aplicación completa en lugar de solo "actualizaciones"?

Me resulta bastante extraño que para actualizar una aplicación en Android (o incluso iOS) se descargue toda la aplicación en lugar de solo las "Actualizaciones" reales.

La razón por la que encuentro esto extraño es porque en Windows mientras se actualiza una aplicación, solo se descargan los archivos de actualización, no toda la aplicación, lo cual es más práctico ya que ahorra tiempo y uso de datos.

Esto parecería trivial para la mayoría, pero cuando necesita descargar una aplicación enorme solo para agregar una pequeña función o corregir un error, se convierte en un verdadero PITA.

¿Alguien tiene una explicación de por qué se implementó este modelo?

Respuestas (3)

Por lo que sé, solo descarga las actualizaciones (denominadas "delta") en Jellybean 4.1 y superior. Obviamente, la instalación inicial es la aplicación completa, pero las actualizaciones solo descargan los datos que han cambiado desde la versión instalada actual (es decir, el "delta" de la misma). No verá nada diferente al actualizar la mayoría de las aplicaciones, todavía parecerá que está descargando la aplicación completa, pero en algunas aplicaciones más grandes verá si 'saltan' partes de la descarga, lo que indica que solo está obteniendo el delta.

Engadget y AndroidCentral tienen artículos que indican que Play Store proporciona actualizaciones delta

¿Qué tan "grande" es la aplicación más grande? ¡Quiero decir que todavía necesito descargar Temple Run 2 completo solo para tener a Usain Bolt! De todos modos, gracias por compartir los artículos.
No estoy seguro. Sé que para algo como Asphalt 6 (que tiene al menos 1 GB) solo ha descargado los cambios en el pasado. Puede ser que solo se aplique a actualizaciones grandes, o tal vez no fue posible generar el delta para la actualización de Temple Run 2 por alguna razón? Solo pueden crear el delta cuando ha cambiado menos de cierto porcentaje. (NB. Todo esto son solo mis pensamientos)
Delta no son instantáneos. Si descarga la actualización justo después de que se haya enviado a Play Store, es posible que no se haya generado delta por ahora. (Solo una suposición)

Como desarrollador de Android, pensé lo mismo, fue frustrante, por decir lo menos, porque una vez olvidé cambiar una línea de código y salió con esa línea incorrecta, lo que provocó que la aplicación arrojara declaraciones de registro a la izquierda y derecho.

Esta pregunta se ha hecho en SO, pero también está en el tema aquí y creo que esta pregunta debería permanecer.

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

Como desarrollador de Android, mi conjetura tendría que ser la forma en que se empaqueta el software. Cada aplicación de Android se empaqueta en un archivo comprimido llamado .apk. Este archivo contiene todo el código, los archivos de diseño y las imágenes que se utilizan para que la aplicación funcione. Es un poco difícil actualizar solo una parte de un archivo, especialmente cuando está comprimido y si el desarrollador tiene funciones de seguridad habilitadas como ProGuard, sería casi imposible implementar un parche.

Estoy seguro de que Google también tenía algunas razones de seguridad para no permitir los parches. Los parches de código tienden a dejar agujeros de seguridad y vulnerabilidades imprevistas.

AFAIK, las actualizaciones delta se introdujeron en GPlay hace aproximadamente medio año. Y sí, también hay algo así como diferencias binarias. Básicamente, .apktambién podría simplemente desempaquetarse en los servidores de Google para comparar versiones y crear los deltas necesarios. Aunque no sé cómo se hace realmente.
Estoy muy interesado en esto ahora, ¿tienes que optar por esto como desarrollador o Google lo administra por ti?
@John Google lo hace automáticamente, no es necesario que el desarrollador realice ninguna acción.

Básicamente, el archivo del paquete de aplicaciones de Android (*.apk) se crea después de que el código de la aplicación esté listo para publicarse. Este archivo se crea después de la compilación y construcción y del proceso de conversión de DALVIK.

Este archivo contiene todos los recursos, es decir, sus imágenes, audio, diseños, clases,

Y en lo que respecta a las ventanas, el marco .NET y el marco Linux funcionan de manera diferente ...

Si desea reemplazar solo cierto código, puede hacerlo en Android, pero por seguridad, debe volver a firmar esa aplicación.

Lo que hace DALVIK es un proceso irreversible, entonces, si se agrega una nueva función, ¿cómo accederá la versión anterior sin saberlo?

Es por eso que requiere actualizar toda la aplicación para que pueda funcionar y funcionar correctamente.