2014-02-06 4 views
5

Also habe ich einen Asset-Katalog mit vier Positionen erstellt: zwei für iPhone und zwei für iPad. Jetzt ziehe ich meine Bilder an die entsprechenden Positionen.Xcode Asset Catalog: Nur eine Kopie jedes Bildes

Mein Problem: Nehmen wir an, ich benutze das gleiche Bild für iPhone @ 2x und iPad @ 1x. Aber Xcode erstellt eine Kopie des Bildes, obwohl das exakt gleiche Bild bereits existiert.

Also habe ich versucht, dieses Problem manuell zu lösen dank this answer. Ich öffne die .imageset Ordner und bearbeiten Sie die „Dateiname“ in der Contents.json Datei wie folgt aus: (. Ich habe auch das Duplikat Bild im Ordner löschen)

{ 
    "images" : [ 
    { 
     "idiom" : "iphone", 
     "scale" : "1x" 
     "filename" : "[email protected]" 
    }, 
    { 
     "idiom" : "iphone", 
     "scale" : "2x", 
     "filename" : "[email protected]" 
    }, 
    { 
     "idiom" : "ipad", 
     "scale" : "1x", 
     "filename" : "[email protected]" 
    }, 
    { 
     "idiom" : "ipad", 
     "scale" : "2x", 
     "filename" : "[email protected]" 
    } 
    ], 
    "info" : { 
    "version" : 1, 
    "author" : "xcode" 
    } 
} 

Nach dem Build ich in der einen Blick darauf werfen. App-Datei und in der Assets.car-Datei, die den Xcode-Asset-Katalog enthält.

Die Dateigröße der Datei Assets.car scheint größer zu sein als erwartet. Als ob das doppelte Bild, das ich gelöscht habe, im Build-Prozess neu hinzugefügt wurde.

Um zu sehen, ob dies wahr ist, dass ich in der Contents.json meines @ 4x Bild jeden „Dateinamen“ geändert:

{ 
    "images" : [ 
    { 
     "idiom" : "iphone", 
     "scale" : "1x" 
     "filename" : "[email protected]" 
    }, 
    { 
     "idiom" : "iphone", 
     "scale" : "2x", 
     "filename" : "[email protected]" 
    }, 
    { 
     "idiom" : "ipad", 
     "scale" : "1x", 
     "filename" : "[email protected]" 
    }, 
    { 
     "idiom" : "ipad", 
     "scale" : "2x", 
     "filename" : "[email protected]" 
    } 
    ], 
    "info" : { 
    "version" : 1, 
    "author" : "xcode" 
    } 
} 

Nach dem Build, überprüfte ich die Dateigröße fo die Assets.car. Und es war deutlich größer als zuvor. Ungefähr viermal so groß wie "[email protected]" - obwohl es in meinem .imageset-Ordner nur einen "[email protected]" gab. Ich nehme also an, dass Xcode während des Build-Prozesses drei Kopien dieses Bildes hinzugefügt hat.

Kann jemand Xcode davon abhalten, diese unnötigen Kopien hinzuzufügen? Wenn Ihre App viele Asset-Kataloge enthält, könnte die App-Größe erheblich ansteigen ...

Vielen Dank im Voraus für Ihre Hilfe!

+0

Haben Sie das gleiche Problem, haben Sie einige Workarounds gefunden? – Mikhail

Antwort

0

Slicen ist der Prozess zum Erstellen und Bereitstellen von Varianten des App-Bundles für verschiedene Zielgeräte.

von https://developer.apple.com/library/content/documentation/IDEs/Conceptual/AppDistributionGuide/AppThinning/AppThinning.html

App Slicing verhindert, dass die App Größe, zu erhöhen, da nur die gerätespezifischen Ressourcen für die Kunden Gerät heruntergeladen werden.

In Bezug auf die Upload-Größe aus einer Entwicklerperspektive scheinen Ihre Sorgen wahr zu sein.

Verwandte Themen