Diferencias de tamaño de archivo de aplicaciones en Android e iOS


Trabajando con ambos servicios de distribución de aplicaciones (android market y Apple App Store) he descubierto un misterio.

El tamaño de archivo de una aplicación es en general mayor para una aplicación de Apple que para una aplicación de Android. Parece que no puedo encontrar ninguna explicación para las diferencias, y parece ser un tema intacto.

He intentado asignar diferentes aplicaciones y la diferencia parece variar entre un par de MB a 6-8 MB. Así que la pregunta es, ¿cómo es que el tamaño del archivo es mayor para Apple apps? ¿Para qué se utiliza el MB extra?

Ejemplos:

BBC:

Android: 918K - https://market.android.com/details?id=bbc.mobile.news.ww

Apple: 6.7 MB - http://itunes.apple.com/dk/app/bbc-news/id364147881?mt=8

Debido a algo de prevención de spam, no puedo vincular directamente al resto.

British Airways

Android: 1.2 MB

Apple: 7.9 MB

Northern Bank

Android: 2.1 MB

Apple: 6.4 MB

Bank of America

Android: 727K

Apple: 2.1 MB

Podría seguir... Si alguien puede proporcionar una estadística del tamaño del archivo para las dos distribuciones de aplicaciones, confirmando o refutando mi teoría. - Te lo agradecería.
Author: l0w, 2011-12-02

4 answers

Acabo de pasar el último día más o menos tratando de rastrear este problema exacto. He construido un pequeño juego llamado BlockIt para Android, y ahora tengo una versión en ejecución para iOS. Lo extremadamente extraño es que la versión de Android es de 8.2 MB y la versión de iOS es de 14.1 MB.

Ahora, ya que soy el dueño de la fuente, quería rastrear esto y averiguar por qué. Como muchos sugieren aquí que son los elementos gráficos-este no es el caso. Todo el conjunto de datos (no código) era casi idéntico en cada envase. Lo cual tiene sentido ya que estoy usando los mismos gráficos en cada aplicación.

Entonces, ¿por qué la compilación de código es tan diferente? Mi compilación de código de iOS fue de casi 7 MB y el de Android fue de menos de 3 MB. El código en sí fue escrito para ejecutarse de manera idéntica y todas las porciones de código, excepto pequeñas, son exactamente las mismas en cada plataforma. Lo que encontré fue que la configuración de compilación (iOS gcc) tuvo efectos masivos en el tamaño de la salida que obtienes. Si establece solo como objetivo ARM6 o ARM7, entonces el tamaño de mi código binario cayó de 7 MB a 5 MB. Esto indica que hay duplicados casi completos de funciones y bibliotecas para cada destino en el binario! Además, los símbolos de depuración incorporados no parecen eliminarse por completo. Finalmente, el cifrado del código también cuesta grandes cantidades. Este es probablemente el más desconcertante, ya que Android firma su apk de una manera similar. Parece que la firma de iOS se hace muy extrañamente.

Entonces, espero que eso ayude. A reiterate:
- Imágenes / Datos no parecen ser el problema
- La construcción de código en iOS genera salida de múltiples plataformas en el binario uno == un montón de código extra (por cierto no wee por qué Apple hace esto-parece extraño).
- El cifrado de código no es muy amigable con el tamaño en iOS.

No hay una manera real de solucionar el problema real (de nuevo, impar y decepcionante).

 18
Author: user1363990,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-09 19:49:08

El ejecutable binario en una aplicación iOS está cifrado, y por lo tanto se comprime muy mal o no se comprime en absoluto. El ejecutable binario en una aplicación iOS está compilado con algún código de biblioteca vinculado estáticamente, lo que a menudo puede hacerlo más grande que el código de bytes Dalvik interpretado para cosas similares. Las aplicaciones de iPhone tienden a contener más contenido gráfico de alta calidad y obras de arte para múltiples resoluciones de pantalla, incluida la pantalla relativamente grande del iPad.

 5
Author: hotpaw2,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-12-02 15:32:56

Para una aplicación universal en iPhone necesitamos poner tres tamaños de imágenes -

Uno para 320x480 px
segundo para 640x940 px (retina)
tercero para 768x1024 (iPad)

Donde mientras desarrollamos una aplicación para Android necesitamos poner tres tipos de imágenes -

Hdpi (alta)
mdpi (medio)
ldpi (baja)

Una cosa más aquí en Android no hay una regla obligatoria para poner los tres tipos de imágenes. Básicamente, depende de para qué objetivo está haciendo la aplicación, solo para esas resoluciones necesitamos poner imágenes.

 1
Author: saadnib,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-12-02 11:18:33

En mi opinión, los desarrolladores de Apple están utilizando más imágenes de tamaño de pantalla completa (en baja definición y Retina), y mucho más imágenes que Android, y archivos de definiciones de interfaz de usuario para iPhone (.XIB) son mucho más grandes que los archivos XML utilizados en Android. También debe haber una diferencia de compresión en el embalaje (.APK) es tan enormemente comprimido ! Y finalmente tal vez una diferencia en la Inclusión de marcos, pero en este punto no tengo ni idea :)

 -1
Author: Camille R,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-12-02 10:44:51