2014-09-22 27 views
7

Als ich eine Today Extension hinzugefügt habe, hat meine App plötzlich an Gewicht zugenommen ... also habe ich eine schnelle Überprüfung durchgeführt, um herauszufinden, woher das Fett kommt. Es sieht so aus, als ob die .apex 13MB groß ist, die Datei 'Assets.car' ist sogar noch größer als die in meiner Haupt-App (+ 8MB). Die Sache ist, ich benutze nur 1 Bild im Anlagenkatalog, den ich in meiner Erweiterung habe.Haupt-App-Assets-Katalog kopiert in der heutigen Erweiterung

Ich habe in Xcode überprüft, mein Haupt-App-Asset-Katalog wird nicht umgeschaltet, um mit der Erweiterung kopiert zu werden, aber es klingt wie es tatsächlich ist.

Ist das normal? Weißt du, was zu tun ist, um die endgültige .apex-Größe zu reduzieren?

Danke!

+0

Ich sehe das auch. Haupt-App hat ein "Assets.car" von 4MB. Selbst nach dem Entfernen aller Assets aus dem Ext bleiben 16 MB. –

+0

Yep, mein Widget Assets.car ist sogar größer als meine Haupt-App. – Dimillian

+0

Wir sehen das auch. Wir verwenden nicht einmal viele Assets in unseren Erweiterungen. Hat jemand herausgefunden, wie man das los wird? – toofah

Antwort

3

Haben Sie zufällig Cocoapods?

Es gibt derzeit eine open issue, die das Skript Copy Pods Resources veranlasst, alle Assets zu suchen und sie in ein großes Archiv zu kompilieren, das möglicherweise nicht für alle Ziele erwünscht ist.

Bis zu dieser fixiert ist, eine einfache Lösung ist es, einen post_install Haken zu Ihrem Podfile hinzuzufügen:

# Fix broken copy-resources phase per https://github.com/CocoaPods/CocoaPods/issues/1546. 
post_install do |installer| 
    installer.project.targets.each do |target| 
    scriptBaseName = "\"Pods/Target Support Files/#{target.name}/#{target.name}-resources\"" 
    sh = (<<-EOT) 
     if [ -f #{scriptBaseName}.sh ]; then 
     if [ ! -f #{scriptBaseName}.sh.bak ]; then 
      cp #{scriptBaseName}.sh #{scriptBaseName}.sh.bak; 
     fi; 
     sed '/WRAPPER_EXTENSION/,/fi\\n/d' #{scriptBaseName}.sh > #{scriptBaseName}.sh.temp; 
     sed '/*.xcassets)/,/;;/d' #{scriptBaseName}.sh.temp > #{scriptBaseName}.sh; 
     rm #{scriptBaseName}.sh.temp; 
     fi; 
    EOT 
    `#{sh}` 
    end 
end 

Kredit für den oben genannten Code-Schnipsel geht bei allen fleißigen Menschen in dem Ausgabe-Thread!

+0

Das ist es. Danke vielmals! Ich hätte mir das Cocoapod-Niveau ansehen sollen. Ging von 28 mb bis 19! – Dimillian

Verwandte Themen