Analysieren der Datei Assets.car in iOS

73

Ich habe versucht, die Gesamtgröße meiner iOS-Anwendung zu reduzieren, die derzeit 48 MB beträgt. Bei der Analyse von Unterordnern stellte ich fest, dass Assets.car 41 MB benötigt. Ich kann nicht öffnen und sehen, welcher so viel Platz einnimmt.

Ich konnte keine gute Dokumentation zur Datei Assets.car finden. Kann jemand vorschlagen, wie der Inhalt angezeigt werden soll?

Rajeev
quelle
Mögliches Duplikat der Datei Was ist Assets.car in .app?
Borrrden
@borrrden, das beantwortet meine Frage nicht. Ich suche nach einer Analyse, welcher Teil mehr Speicher benötigt.
Rajeev
@rajeevprasanna Ich denke, diese Datei enthält auch hochskalierte Bilder für das iPhone 6!
João Nunes

Antworten:

107

Dieses Tool kann ein .car-Archiv extrahieren: https://github.com/steventroughtonsmith/cartool

Schritte zum Extrahieren des Archivs:

Nachdem Sie die Zip-Datei von github heruntergeladen haben, kompilieren Sie sie in Xcode, um das Befehlszeilentool zu generieren. Erweitern Sie dann die ProductsGruppe, klicken Sie mit der rechten Maustaste auf die cartoolDatei und suchen Sie sie im Finder. Sie können das Tool dann folgendermaßen ausführen:

  • Terminal öffnen
  • cd /path/to/cartool
  • ./cartool /path/to/Assets.car /path/to/outputDirectory
Lewis
quelle
Ich habe dieses Tool heruntergeladen, weiß aber nicht, wie ich es verwenden soll. Wo sind die Ausgabedateien?
Jimmy
Ich habe der Antwort einige zusätzliche Informationen mit kurzen Laufanweisungen hinzugefügt. Wenn Sie es zum Laufen bringen, können Sie möglicherweise die readme.md für andere Personen in Ihren Schuhen aktualisieren.
Lewis
Ich folge Ihrer Anweisung, aber es hieß: cartool: Binärdatei kann nicht ausgeführt werden. Bitte beraten. Vielen Dank.
Jimmy
3
Ein paar Probleme. 1) Es listet die darin enthaltenen Dateien auf, Assets.caraber am Ende output folderist die leer. 2) Sie führen den Befehl erneut aus und er gibt Ihnen Segmentation fault: 11.
Adeel
8
Dieses Tool funktioniert nicht mit neueren .car-Dateien (aus dem ios11 SDK)
Carla Camargo
70

Führen Sie Apples Assetutil aus:

xcrun --sdk iphoneos assetutil --info Assets.car

Sie erhalten eine JSON-Beschreibung jedes Elements in der Datei. Etwas wie das:

  {
    "Height" : 60,
    "Scale" : 1,
    "RenditionName" : "D3801CE9-19F1-4CE9-97C6-7E1EFFFCAE89",
    "AssetType" : "Vector",
    "SizeOnDisk" : 10822,
    "Name" : "mailbox",
    "Idiom" : "universal",
    "Width" : 99
  },

Beachten Sie die Zeile "SizeOnDisk" : 10822.

Dieses Tool führt eine eingeschränkte .car-Manipulation durch und führt man assetutilDetails aus.


Das Assets.car scheint ein proprietäres Apple-Archiv zu sein, das erstmals in iOS 7 veröffentlicht wurde. Einige Dienstprogramme können seinen Inhalt mithilfe der privaten Klasse CUICatalogdes CoreUI-Frameworks extrahieren:

Es gibt auch eine App, die .car-Dateien liest: Crunch 9 $, 15-Tage-Testversion

Running strings Assets.carkehrte zurück

@(#)PROGRAM:CoreUI  PROJECT:CoreUI-475.1.1
IBCocoaTouchImageCatalogTool-9.0

Das Ausführen findin Xcode-Beta /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Xcode/Overlays/IBCocoaTouchImageCatalogToolist eine ausführbare Simulator-Datei (i386 + x86_64). Ich habe nicht weiter nachgeforscht, aber ich wette, dass dieses Tool .car-Archive öffnen könnte, wenn Sie es im Simulator ausführen.

Jano
quelle
59

Wenn Sie Asset-Kataloge durchsuchen und extrahieren möchten, können Sie auch meine App Asset Catalog Tinkerer verwenden

Asset Catalog Tinkerer Screenshot

Guilherme Rambo
quelle
es stürzte ab, als ich Release-Version 2.3 verwendete, um die von xCode, Version 8.0 Beta 6 (8S201h) erstellte .car-Datei zu öffnenAssertion failed: (tokenCount < maxCountIncludingZeroTerminator - 1), function CUIRenditionKeySetValueForAttribute, file /BuildRoot/Library/Caches/com.apple.xbs/Sources/CoreUI/CoreUI-366.1/CoreTheme/ThemeStorage/CUIThemeRendition_Support.m, line 228.
igrek
@igrek Bitte öffnen Sie ein Problem auf GitHub und fügen Sie eine Beispieldatei bei. Vielen Dank.
Guilherme Rambo
Es tut mir leid, aber dies ist ein kommerzielles Projekt. Glauben Sie, dass es etwas speziell mit seinen Vermögenswerten zu tun hat? Ich habe die .cartool ( stackoverflow.com/a/29468398/907692 ) ausprobiert und sie hat das gleiche Problem
igrek
Es gibt wahrscheinlich etwas Spezielles in der Datei, das dieses Problem verursacht. Ohne die Datei kann ich nicht viel tun ...
Guilherme Rambo
@ GuilhermeRambo Ich bin in der Lage, den genauen Fehler zu finden, indem ich versuche, die Assets.carDatei von Xcode 8 zu öffnen , die sich unterXcode.app/Contents/SharedFrameworks/DVTKit.framework/Versions/A/Resources
Allen Zeng
1

Guilherme Rambo sagte, es sei richtig, nicht der Lewis42.

Angenommen, eine PDF-Datei ('a.pdf') in Asserts.car.

Sie erhalten drei PNG-Dateien (a.png / a @ 2x.png / a @ 3x.png), wenn Sie cartool verwenden und das Dateiformat geändert wurde.

Wenn Sie jedoch AssetCatalogTinkerer verwenden, können Sie eine Vorschau der a.pdf-Datei anzeigen (kein Dateiformat geändert).

J. Caspar
quelle
0

Universal-Binärdateien scheinen mehrere Bildauflösungen für jede Bildschirmdichte zu enthalten.

Sobald die App in den App Store hochgeladen wurde, ist die Dateigröße geringer als Ihre Universal-Binärdatei, da jedes Gerät nur die entsprechende Bilddichte erhält.

Sie können die Dateigröße hier überprüfen: iTunes Connect> Meine Apps> Ihre App> Aktivität> Ihr Build> Dateigröße im App Store

RhodanV5500
quelle