tutorial kits español developer desarrollador cuenta apple ios xcode swift

ios - kits - Después de cambiar a Xcode 7, el tamaño de la aplicación aumentó de 9 MB a 60 MB, ¿hay alguna solución?



xcode kits (5)

Bitcode incrustado es la razón.

Suponiendo que no desea deshabilitar ENABLE_BITCODE, puede quitar los símbolos de depuración.

Consulte http://oguzbastemur.blogspot.com/2015/09/xcode-7-and-increaded-binary-size.html como quitar los símbolos de depuración antes de incrustar el código de bits es una de las opciones que puede hacer.

He estado retrocediendo en la historia de Git para encontrar la causa de un enorme cambio de tamaño de archivo, pero la única razón real que puedo encontrar es el cambio de Xcode 6 a Xcode 7 GM.

Descubrí que estos son los 10 principales contribuyentes de tamaño de archivo en un .ipa creado a partir de la operación de archivo en una configuración de compilación de lanzamiento :

$ 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

Con mucho, los archivos más grandes son los dos (ligeramente diferentes) libswiftCore.dylib , que suman más de 32 MB. En el paquete creado por Xcode 6, estos dos archivos totalizaron solo 3 MB.

Entonces la pregunta # 1 es: ¿Por qué los archivos principales de Swift están allí dos veces? ( El contenido incrustado contiene el código Swift está establecido en No ).

Y la pregunta # 2 es: ¿Qué pasó? ¿Por qué el tamaño del núcleo Swift aumentó en 15 MB? ¿Es esto permanente?

Algunas notas adicionales:

  • Este es un proyecto que era completamente Objective-C pero ahora es mayormente Swift. La configuración del módulo Defines se establece en .
  • ¡El proyecto usa CocoaPods con use_frameworks! conjunto.
  • He confirmado el tamaño real de descarga de TestFlight en múltiples dispositivos y versiones de iOS y está en el rango de 30–60 MB (presumiblemente la diferencia se debe a la división de aplicaciones). Solía ​​ser de 9 MB.

He estado probando muchas configuraciones y combinaciones y parece que el tamaño del archivo de los paquetes creados por Xcode 7 varía mucho según el dispositivo y la versión de iOS. Además, las compilaciones de TestFlight ahora son enormes en comparación con antes, pero la buena noticia es que una vez en la App Store no ha habido un gran aumento (aunque estoy viendo aproximadamente 1–2 MB agregados al tamaño del paquete en comparación con antes) .

Aquí hay algunos ejemplos para mostrar la variación entre TestFlight, App Store y dispositivos:

TestFlight, iPhone 5s en iOS 9.1
35,6 MB

TestFlight, iPhone 6 en iOS 8.4.1
70,1 MB

Tienda de aplicaciones
11,8 MB

El tamaño de la tienda de aplicaciones era idéntico en todos los dispositivos que probé. Sin embargo, no lo he probado en iPhone 6 Plus, es muy posible que el tamaño del paquete sea mayor ya que utiliza activos @ 3x.


Probablemente causado por BitCode, he visto el mismo crecimiento, sin embargo, una vez implementado desde la App Store, el tamaño de la aplicación no ha crecido realmente.

Puede deshabilitar BitCode en su aplicación y en los otros objetivos también y debería ver una reducción.


Se espera que el tamaño de los dylibs rápidos, y su propio código, sea significativamente mayor en el archivo .xcarchive, y cuando exporte para la distribución de la tienda, debido a la inclusión del código de bits. Este tamaño adicional no se reflejará en lo que realmente se entrega a sus usuarios, por lo que no debería ser un problema. Cuando envíe su aplicación a la tienda, la tienda la procesará para eliminar el código de bits, y esa versión procesada de la IPA es lo que descargarán sus usuarios.

Si realiza cualquier tipo de exportación desde su archivo, excepto una exportación de tienda (por ejemplo, guardar para una implementación ad-hoc), eliminaremos localmente el código de bits (e incluso volveremos a compilar sus binarios desde el código de bits primero, si deja esa opción marcada en la exportación flujo de trabajo, para recrear lo que sucederá en la tienda), para que pueda ver qué tan grande será realmente su aplicación. TestFlight también le quitará el código de bits y le mostrará el tamaño real de su aplicación.

También debe tener en cuenta que el tamaño de su aplicación también se puede reducir mediante el adelgazamiento de la aplicación, que puede leer en https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/Introduction/Introduction.html . Es probable que desee realizar una exportación ad-hoc para ver el tamaño de cada variante reducida de su aplicación de todos modos.


También tuvimos este problema con Swift 1.2. Consulte Cómo evitar que las bibliotecas SwiftSupport se incluyan dos veces para mi pregunta original sobre este mismo problema.

Estoy bastante seguro de que este es un problema de la cadena de herramientas.