ios per Dopo essere passati a Xcode 7, le dimensioni dell'app sono passate da 9 MB a 60 MB, c'è una soluzione?




appstore connect apple (4)

Abbiamo riscontrato anche questo problema con Swift 1.2. Vedi Come impedire che le librerie SwiftSupport vengano incluse due volte per la mia domanda originale sullo stesso problema.

Sono abbastanza sicuro che questo sia un problema di toolchain.

Sono andato indietro nella storia di Git per trovare la causa di un enorme cambiamento nella dimensione del file, ma l'unica vera ragione che posso trovare è il passaggio da Xcode 6 a Xcode 7 GM.

Ho scoperto che questi sono i primi 10 collaboratori alla dimensione del file in un .ipa creato dall'operazione Archive su una configurazione build di rilascio :

$ 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

Di gran lunga i file più grandi sono i due (leggermente diversi) file libswiftCore.dylib , che ammontano a oltre 32 MB. Nel bundle creato da Xcode 6 questi due file hanno totalizzato solo 3 MB.

Quindi la domanda n. 1 è: perché i file core di Swift sono presenti due volte? ( Il contenuto incorporato contiene il codice Swift è impostato su No ).

E la domanda n. 2 è: cosa è successo? Perché le dimensioni del core Swift sono aumentate di 15 MB? Questo è permanente?

Alcune note aggiuntive:

  • Questo è un progetto interamente Objective-C ma ora è principalmente Swift. L'impostazione Definisce modulo è impostata su .
  • Il progetto utilizza CocoaPods con use_frameworks! impostato.
  • Ho confermato le dimensioni effettive del download da TestFlight su più dispositivi e versioni iOS ed è nell'intervallo 30–60 MB (presumibilmente la differenza è dovuta al taglio delle app). Una volta era di 9 MB.

Answer #1

Ho testato molte impostazioni e combinazioni e sembra che le dimensioni del file dei bundle creati da Xcode 7 variano molto a seconda del dispositivo e della versione di iOS. Inoltre, le build TestFlight ora sono enormi rispetto a prima, ma la buona notizia è che una volta su App Store non c'è stato un enorme aumento (anche se sto vedendo circa 1-2 MB aggiunti alla dimensione del bundle rispetto a prima) .

Ecco alcuni esempi per mostrare la varianza tra TestFlight, App Store e dispositivi:

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

TestFlight, iPhone 6 su iOS 8.4.1
70,1 MB

App Store
11,8 MB

Le dimensioni dell'App Store erano identiche su tutti i dispositivi che ho testato. Non l'ho ancora testato su iPhone 6 Plus, è molto probabile che la dimensione del bundle sia maggiore poiché utilizza risorse @ 3x.


Answer #2

Si prevede che la dimensione dei veloci dylibs e il proprio codice saranno significativamente maggiori in .xcarchive e quando si esporta per la distribuzione del negozio, a causa dell'inclusione del bitcode. Questa dimensione aggiuntiva non si rifletterà su ciò che viene effettivamente consegnato ai tuoi utenti, quindi non dovrebbe essere un problema. Quando invii la tua app al negozio, il negozio la elaborerà per eliminare il bitcode e quella versione elaborata dell'IPA è ciò che i tuoi utenti scaricheranno.

Se esegui qualsiasi tipo di esportazione dal tuo archivio ad eccezione dell'esportazione di un negozio (ad esempio, salva per la distribuzione ad-hoc), elimineremo localmente il bitcode (e ricompileremo anche i tuoi binari dal bitcode, se lasci quell'opzione selezionata nell'esportazione flusso di lavoro, per ricreare ciò che accadrà nello store), in modo da poter vedere quanto sarà grande la tua app. TestFlight rimuoverà anche il bitcode per te e ti mostrerà la tua vera dimensione dell'app.

Dovresti anche essere consapevole che le dimensioni della tua app possono essere ridotte anche tramite l'assottigliamento dell'app, che puoi leggere su https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/Introduction/Introduction.html . Probabilmente vorrai eseguire un'esportazione ad hoc per vedere comunque le dimensioni di ciascuna variante assottigliata della tua app.


Answer #3

Molto probabilmente causato da BitCode, ho visto la stessa crescita, tuttavia una volta distribuita dall'App Store le dimensioni dell'app non sono effettivamente aumentate.

Puoi disabilitare BitCode nella tua app e anche negli altri target e dovresti vedere una contrazione.





swift