web-dev-qa-db-fra.com

Différences de taille de fichier d'application dans Android et iOS

En travaillant avec les deux services de distribution d'applications (Android Market et Apple App Store), j'ai découvert un mystère.

La taille de fichier d'une application est généralement plus grande pour une application Apple que pour une application Android. Il semble que je ne trouve aucune explication aux différences, et il semble que ce soit un sujet vierge.

J'ai essayé plusieurs applications et la différence semble varier entre quelques Mo à 6-8 Mo. La question est donc: pourquoi la taille du fichier est-elle plus grande pour les applications Apple? A quoi sert le MB supplémentaire?

Exemples:

BBC:

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

Apple: 6,7 Mo - http://iTunes.Apple.com/dk/app/bbc-news/id364147881?mt=8

En raison de la prévention du spam, je ne parviens pas à me connecter directement au reste.

British Airways

Android: 1,2 Mo

Apple: 7,9 Mo

Banque du nord

Android: 2.1 MB

Apple: 6,4 Mo

Banque d'Amérique

Android: 727K

Apple: 2.1 MB

Je pourrais continuer ... Si quelqu'un peut fournir une statistique de la taille du fichier pour les deux distributions d'applications, confirmant ou infirmant ma théorie. - Je l'apprécierais beaucoup.

26
Thomas Volden

Je viens de passer le dernier jour à essayer de retrouver ce problème. J'ai construit un petit jeu appelé BlockIT pour Android et j'ai maintenant une version en cours d'exécution pour iOS. Ce qui est extrêmement étrange, c'est que la version Android utilise 8,2 Mo et la version iOS 14,1 Mo.

Maintenant, puisque je suis le propriétaire de la source, je voulais en savoir plus et comprendre pourquoi. Comme beaucoup suggèrent ici que ce sont les éléments graphiques - ce n'est pas le cas. L'ensemble des données (sans code) était presque identique dans chaque paquet. Ce qui est logique puisque j'utilise les mêmes graphiques dans chaque application.

Alors, pourquoi le code est-il si différent? La taille de mon code iOS était de près de 7 Mo et celle d’Android, de moins de 3 Mo. Le code lui-même a été écrit pour une exécution identique et toutes les portions de code, sauf les plus petites, sont exactement les mêmes sur chaque plate-forme. Ce que j’ai trouvé, c’est que les paramètres de construction (iOS gcc) ont eu des effets considérables sur la taille de la sortie que vous obtenez. Si vous définissez uniquement pour cibler ARM6 ou ARM7, la taille de mon binaire de code est passée de 7 à 5 Mo. Cela indique qu'il existe des doublons presque complets de fonctions et de bibliothèques pour chaque cible dans le fichier binaire! De plus, les symboles de débogage intégrés ne semblent pas totalement supprimés. Enfin, le cryptage du code coûte également beaucoup. C'est probablement le plus déroutant, puisque Android signe ses apk d'une manière similaire. Il semble que la signature sur iOS soit très étrange.

Donc, j'espère que ça aide. Recommencer:
- Les images/données ne semblent pas être le problème
- La génération de code sur iOS génère plusieurs sorties de plate-forme dans un seul binaire == beaucoup de code supplémentaire (au fait, je ne comprends pas pourquoi Apple le fait - cela semble étrange).
- Le cryptage du code n’est pas très convivial sur iOS. 

Il n'y a pas vraiment de moyen de résoudre le problème (encore une fois, étrange et décevant). 

19
user1363990

L'exécutable binaire dans une application iOS est crypté et compresse donc très mal ou pas du tout. L'exécutable binaire d'une application iOS est compilé avec un code de bibliothèque lié statiquement, ce qui peut souvent le rendre plus volumineux que le code d'octet Dalvik interprété pour des éléments similaires. Les applications iPhone ont tendance à contenir davantage de contenu graphique et d'illustrations de haute qualité pour des résolutions d'écran multiples, y compris un écran iPad relativement grand.

6
hotpaw2

Pour une application universelle sur iPhone, nous devons mettre trois tailles d’images -

un pour 320x480 px
seconde pour 640x940 px (rétine)
troisième pour 768x1024 (iPad)

où, tout en développant une application Android, nous devons mettre trois types d'images -

hdpi (haut)
mdpi (moyenne)
LDPI (bas)

encore une chose ici dans Android il n’existe pas de règle obligatoire pour mettre les trois types d’images. En gros, cela dépend de la cible pour laquelle vous créez l'application, mais uniquement pour les résolutions, nous devons placer des images.

1
saadnib