50 votos

Después de cambiar a Xcode 7, aplicación de tamaño creció de 9 MB a 60 MB, ¿hay una solución?

He estado yendo hacia atrás en el Git de la historia para encontrar la causa de un gigantesco archivo de cambio de tamaño, pero la única razón por la que puedo encontrar es el cambio de Xcode 6 a Xcode 7 GM.

He encontrado que estos son los top 10 tamaño del archivo de los contribuyentes en un .ipa creado a partir del Archivo de operación en un Comunicado de configuración de compilación:

$ 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

Por mucho, el más grande de los archivos son los dos (ligeramente diferentes) libswiftCore.dylib ficheros, que suman un total de más de 32 MB. En el paquete construido por Xcode 6 estos dos archivos ascendieron a sólo 3 MB.

Así que la pregunta #1: ¿por Qué el Swift archivos del núcleo de allí dos veces? (Contenido incrustado Contiene el Código Swift se establece en No).

Y la pregunta #2: ¿Qué pasó? ¿Por qué el Swift núcleo aumento de tamaño de 15 MB? Es esta permanente?

Algunas notas adicionales:

  • Este es un proyecto que fue totalmente Objective-C, pero ahora es sobre todo Swift. La Define el Módulo de configuración está establecida en .
  • El proyecto utiliza con CocoaPods use_frameworks! conjunto.
  • He confirmado el real tamaño de la descarga de TestFlight en múltiples dispositivos y versiones de iOS y es en el rango de 30 a 60 MB (es de suponer que la diferencia es debido a la aplicación de rebanar). Solía ser de 9 MB.

11voto

David Rothera Puntos 140

La causa más probable de BitCode, he visto el mismo crecimiento, sin embargo, una vez desplegado desde la App Store la app de tamaño no ha crecido.

Puede deshabilitar BitCode en su aplicación y los objetivos de otros así y usted debería ver una contracción.

4voto

Rick Ballard Puntos 876

Se espera que el tamaño de la swift dylibs, y su propio código, será significativamente más grande en el .xcarchive, y al exportar para almacén de distribución, debido a la inclusión de bitcode. Este tamaño no se refleja en lo que realmente se entrega a sus usuarios, por lo que no debería ser un problema. Cuando usted envíe su aplicación a la tienda, la tienda de proceso para quitar el bitcode, y que la versión procesada de la IPA es lo que los usuarios van a descargar.

Si haces cualquier tipo de exportación de su archivo, salvo un almacén de exportación (por ejemplo, ahorrar para ad-hoc de implementación), vamos a localmente tira de la bitcode (e incluso volver a compilar los binarios de bitcode en primer lugar, si usted deja que la opción marcada en la exportación de flujo de trabajo, para recrear lo que va a suceder en la tienda), así que usted puede ver lo grande que su aplicación va a ser en realidad. TestFlight también tira bitcode para usted y mostrar su verdadero tamaño de la aplicación.

También debe ser consciente de que su aplicación tamaño también puede ser reducido a través de la aplicación de adelgazamiento, que se puede leer en https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/Introduction/Introduction.html. Es probable que se desea realizar una ad-hoc de exportación para ver el tamaño de cada diluido variante de la aplicación de todos modos.

2voto

Xaositek Puntos 21

He aquí la mía - ambos son Swift aplicaciones. La primera generación de lo que estaba originalmente en la App Store y es considerado Swift 1, el segundo es el de "actualizar" para ser Swift 2. Swift 1 en la app fue compilado con Xcode 6, Swift 2 aplicación construida con Xcode 7 (GM).

4.1M    ./Swift1_Version_of_App
 39M    ./Swift2_Version_of_App

He ampliado el .ipa archivos para los archivos raw (el cambio de nombre .zip, etc) y aquí las diferencias.

----Swift 1----
xaositek$ ls -alh
total 16
drwx------   6 xaositek  staff   204B Sep 15 12:46 .
drwxr-xr-x   4 xaositek  staff   136B Sep 15 12:46 ..
-rw-r--r--@  1 xaositek  staff   6.0K Sep 15 12:46 .DS_Store
drwxr-xr-x   3 xaositek  staff   102B Sep 15 12:42 Payload
drwxr-xr-x  11 xaositek  staff   374B May  1 08:55 SwiftSupport
drwxr-xr-x   4 xaositek  staff   136B Sep 15 12:42 Symbols

xaositek$ du -d 25 -h
8.0K    ./Payload/MyApp.app/_CodeSignature
 12K    ./Payload/MyApp.app/Base.lproj/Main.storyboardc
 16K    ./Payload/MyApp.app/Base.lproj
7.9M    ./Payload/MyApp.app/Frameworks
8.6M    ./Payload/MyApp.app
8.6M    ./Payload
7.9M    ./SwiftSupport
184K    ./Symbols
 17M    .


----Swift 2----
xaositek$ ls -alh
total 0
drwx------   6 xaositek  staff   204B Sep 15 12:46 .
drwxr-xr-x   4 xaositek  staff   136B Sep 15 12:46 ..
drwxr-xr-x   4 xaositek  staff   136B Sep 15 12:43 BCSymbolMaps
drwxr-xr-x   3 xaositek  staff   102B Sep 15 12:43 Payload
drwxr-xr-x   3 xaositek  staff   102B Sep 13 15:36 SwiftSupport
drwxr-xr-x  28 xaositek  staff   952B Sep 15 12:43 Symbols

xaositek$ du -d 25 -h
 48K    ./BCSymbolMaps
8.0K    ./Payload/MyApp.app/_CodeSignature
 12K    ./Payload/MyApp.app/Base.lproj/Main.storyboardc
 16K    ./Payload/MyApp.app/Base.lproj
 47M    ./Payload/MyApp.app/Frameworks
 48M    ./Payload/MyApp.app
 48M    ./Payload
 47M    ./SwiftSupport/iphoneos
 47M    ./SwiftSupport
9.5M    ./Symbols
105M    .

0voto

St3fan Puntos 16196

También hemos tenido este problema con Swift 1.2. Vea Cómo prevenir SwiftSupport bibliotecas para ser incluido dos veces por mi pregunta original sobre este mismo tema.

Estoy bastante seguro de que este es un conjunto de herramientas problema.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X