J'ai remonté l'historique de Git pour trouver la cause d'un changement de taille de fichier énorme, mais la seule vraie raison que je peux trouver est le passage de Xcode 6 à Xcode 7 GM.
J'ai constaté que ce sont les 10 facteurs qui contribuent le plus à la taille des fichiers dans une entreprise. .ipa
créé à partir du Archives sur une Communiqué de presse configuration de la construction :
$ unzip -lv Roger\ Release.ipa | sort -k +3nr | head
41802768 Defl:N 16887199 60% 09-14-15 23:47 dc24cdc1 Payload/Roger.app/Frameworks/libswiftCore.dylib
41802400 Defl:N 16886076 60% 09-06-15 18:33 f939ea6a SwiftSupport/iphoneos/libswiftCore.dylib
11184032 Defl:N 5915625 47% 09-14-15 23:48 6ceac4a2 Payload/Roger.app/Roger
6399584 Defl:N 2670275 58% 09-14-15 23:47 0ac52d3f Payload/Roger.app/Frameworks/libPhoneNumber_iOS.framework/libPhoneNumber_iOS
5410384 Defl:N 2334189 57% 09-14-15 23:47 7a8cb03f Payload/Roger.app/Frameworks/Alamofire.framework/Alamofire
4521904 Defl:N 2292789 49% 09-14-15 23:47 95da0882 Payload/Roger.app/Frameworks/FBSDKCoreKit.framework/FBSDKCoreKit
4731552 Defl:N 1926357 59% 09-14-15 23:48 e05337de Payload/Roger.app/Frameworks/libswiftFoundation.dylib
4731168 Defl:N 1925355 59% 09-06-15 18:33 19a5c3c4 SwiftSupport/iphoneos/libswiftFoundation.dylib
2659232 Defl:N 1232897 54% 09-14-15 23:47 1a53a401 Payload/Roger.app/Frameworks/AFNetworking.framework/AFNetworking
1196624 Defl:N 545343 54% 09-14-15 23:47 19a063cb Payload/Roger.app/Frameworks/Bolts.framework/Bolts
Les fichiers les plus volumineux sont de loin les deux fichiers (légèrement différents) suivants libswiftCore.dylib
qui totalisent plus de 32 Mo. Dans le paquet construit par Xcode 6, ces deux fichiers totalisent seulement 3 MB.
Donc la question n°1 est : Pourquoi les fichiers du noyau Swift sont-ils présents deux fois ? ( Le contenu intégré contient du code Swift est réglé sur Non ).
Et la question n°2 est : Que s'est-il passé ? Pourquoi la taille du noyau Swift a-t-elle augmenté de 15 Mo ? Est-ce permanent ?
Quelques notes supplémentaires :
- Il s'agit d'un projet qui était entièrement en Objective-C mais qui est maintenant principalement en Swift. Le site Définit le module est réglé sur Oui .
- Le projet utilise CocoaPods avec
use_frameworks!
set. - J'ai confirmé la taille réelle du téléchargement à partir de TestFlight sur plusieurs appareils et versions d'iOS et elle est comprise entre 30 et 60 Mo (la différence est probablement due au découpage de l'application). Avant, il était de 9 Mo.