2011-12-02 8 views
25

Al trabajar con los servicios de distribución de aplicaciones (Android Market y Apple App Store) descubrí un misterio.Diferencias de tamaño de archivo de aplicación en Android e iOS

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

He probado la asignación de diferentes aplicaciones y la diferencia parece variar entre un par de MB a 6-8 MB. Entonces la pregunta es, ¿cómo es que el tamaño del archivo es más grande para las aplicaciones de Apple? ¿Para qué se usa el MB adicional?

Ejemplos:

BBC:

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

de Apple: 6,7 MB - http://itunes.apple.com/dk/app/bbc-news/id364147881?mt=8

Debido a alguna de prevención de spam, soy incapaz de enlazar directamente a los demás.

British Airways

Android: 1.2 MB

de Apple: 7,9 MB

Northern Bank

Android: 2.1 MB

de Apple: 6,4 MB

Bank of America

Android: 727K

de Apple: 2.1 MB

podría seguir ... Si alguien puede proporcionar una estadística de tamaño de archivo para las dos distribuciones de aplicaciones, que confirman o refutan mi teoría. - Apreciaría mucho.

+0

Investigar la pregunta Encontré que incluso los gráficos más básicos (botones, paneles, etc.) en todas las resoluciones compatibles, se colocaron en las aplicaciones de Apple que tuve la oportunidad de examinar. Si este es el procedimiento normal para el desarrollo de la aplicación Apple, entonces eso puede representar parte del MB adicional. ¿Es esto normal para las aplicaciones de Apple? – l0w

+0

Es 2017 y tengo malas noticias para usted ... –

Respuesta

17

Acabo de pasar el último día intentando rastrear este problema exacto. He creado un pequeño juego llamado BlockIT para Android, y ahora tengo una versión en ejecución para iOS. Lo más 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, como soy el propietario 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. El conjunto de datos completo (sin código) era casi idéntico en cada paquete. Lo cual tiene sentido ya que estoy usando los mismos gráficos en cada aplicación.

Entonces, ¿por qué la construcción del código es muy diferente? La construcción de mi código iOS fue de casi 7 MB y la de Android fue de menos de 3 MB. El código en sí se escribió para ejecutarse de manera idéntica y todas las partes del código, excepto las 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 sobre el tamaño del resultado que obtienes. Si configuró solo para apuntar a ARM6 o ARM7, 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 objetivo en el binario! Además, los símbolos de depuración incorporados no parecen estar totalmente despojados. Finalmente, el cifrado del código también cuesta grandes cantidades. Esto es probablemente el más desconcertante, ya que Android firma sus apk de manera similar. Parece que la firma de iOS se hace de manera muy extraña.

Entonces, espero que eso ayude. Para reiterar:
- Las imágenes/datos no parecen ser el problema
- La creación de código en iOS genera una salida de plataforma múltiple en un binario == lotes de código adicional (por cierto, no sé por qué Apple hace esto - parece extraño)
- El cifrado de código no es muy amigable para el tamaño en iOS.

No hay forma real de solucionar el problema real (de nuevo, extraño y decepcionante).

+1

para aclarar por qué produce múltiples salidas para diferentes versiones de ARM: Se debe a que diferentes generaciones de procesadores admiten funciones adicionales directamente por el procesador para acelerar la ejecución del código. Pero dado que estos solo se pueden ejecutar en la arquitectura correcta, también necesitará código cuando el dispositivo no admita ciertas instrucciones. Entonces, ¿por qué Apple lo hace? para mejorar el rendimiento en dispositivos capaces a cambio de una diferencia de tamaño de archivo bastante irrelevante. – Infinite

+1

Sí, entiendo para cumplir diferentes plataformas de destino, pero es extraño porque en lugar de resolverlo en una API o en alguna arquitectura sensible, incluyen dos copias completas de las bibliotecas (es por eso que son aproximadamente 2 veces). Por lo tanto. Impar. :) – user1363990

-1

En mi opinión, los desarrolladores de Apple usan imágenes de pantalla completa (en baja definición y Retina) y muchas más imágenes que Android, y los archivos de definiciones de interfaz de usuario para iPhone (.XIB) son mucho más grandes que los archivos XML utilizados en Android ¡También debería existir una diferencia de compresión en el embalaje (.APK) tan comprimida!Y, finalmente, tal vez una diferencia en los marcos incluyendo, pero en este momento no tengo idea :)

+0

¿Puede ser que las aplicaciones de iOS estén más vinculadas de forma estática a las bibliotecas mientras que las bibliotecas de android no están incluidas en el paquete? – Roalt

+0

Usted dice que el archivo .apk comprimí, lo que implica que Apple no? – l0w

+0

Supongo que sí, no creo que Apple permita la aplicación sin comprimir en su tienda, especialmente después de miles de millones de descargas. Para las bibliotecas, no tengo idea; pero todavía suena raro por qué Apple incluye bibliotecas en sus paquetes –

1

Para una aplicación universal en el iPhone tenemos que poner tres tamaño de las imágenes -

uno de 320x480 píxeles
segundos para 640x940 píxeles (retina)
tercio de 768x1024 (iPAD)

donde como al desarrollar una aplicación de Android que necesitamos para poner tres tipos de imágenes -

IPAP (alto)
mdpi (medio)
ldpi (bajo)

una cosa más aquí en Android no hay una regla obligatoria para poner los tres tipos de imágenes. Básicamente depende del objetivo que está creando la aplicación, solo para aquellas resoluciones que necesitamos para poner imágenes.

5

El ejecutable binario en una aplicación de iOS está encriptado y, por lo tanto, se comprime muy poco o no se comprime del todo. El ejecutable binario en una aplicación iOS se compila con un código de biblioteca vinculado estáticamente, que a menudo puede hacer que sea más grande que el código interpretado de byte Dalvik para cosas similares. Las aplicaciones de iPhone tienden a contener más contenido de gráficos de alta calidad e ilustraciones para múltiples resoluciones de pantalla, incluida la relativamente grande pantalla del iPad.

+0

Eso hace sens. Android admite diferentes resoluciones, utilizando una estructura de carpetas especial. Esto hace que Android pueda seleccionar automáticamente los gráficos óptimos para las diferentes resoluciones. - ¿No es esta una solución ampliamente utilizada? – l0w

Cuestiones relacionadas