2014-03-25 80 views
46

我试图减小当前48MB的iOS应用程序的总体大小。当我分析子文件夹时,我发现Assets.car正在使用41MB。我无法打开并看到哪一个正在占用那么多空间。分析IOS中的Assets.car文件

我找不到任何关于Assets.car文件的好文档。有人可以建议如何查看内容?

+0

[什么是.app中的Assets.car文件?]可能的重复(http://stackoverflow.com/questions/20777488/what-is-assets-car-file-in-app) – borrrden

+0

@borrrden,this不回答我的问题。我正在寻找分析哪部分需要更多记忆。 – Rajeev

+0

@rajeevprasanna我认为这个文件也包含iPhone 6的升级版图像! –

回答

93

此工具可以提取。汽车档案:https://github.com/steventroughtonsmith/cartool

步骤提取档案:

一旦你下载从GitHub上的拉链,编译在Xcode生成的命令行工具。然后展开Products组,然后右键单击cartool文件并在查找器中找到它。然后,您可以像下面这样运行该工具:

  • 开放终端
  • cd /path/to/cartool
  • ./cartool /path/to/Assets.car /path/to/outputDirectory
+0

我下载了这个工具,但我不知道如何使用它?输出文件在哪里? – jimmy

+0

我已经通过简短的运行说明在答案中添加了一些额外的信息。也许如果你得到它的工作,你可以更新readme.md给你鞋子里的其他人。 – Lewis42

+0

我遵循你的指令,但它说:cartool:不能执行二进制文件。请指教。谢谢。 – jimmy

25

如果你想浏览和提取资产目录,你也可以用我的应用程序Asset Catalog Tinkerer

Asset Catalog Tinkerer screenshot

+0

当我使用发行版本2.3打开由xCode创建的.car文件时,它崩溃了版本8.0 beta 6(8S201h)'断言失败:(tokenCount igrek

+0

@igrek请在GitHub上打开一个问题,并提供一个示例文件。谢谢。 –

+0

我很抱歉,这是一个商业项目..你认为它与资产有什么关系吗?我试过.cartool(http://stackoverflow.com/a/29468398/907692),它有相同的问题 – igrek

0

通用二进制文件对于每个屏幕密度似乎都包含多个图像分辨率。

将应用程序上传到App Store后,文件大小将小于您的通用二进制文件,因为每个设备只会获得适当的图像密度。

你可以在这里查看文件大小:iTunes Connect中>我的应用>您的应用程序>活动>您的构建> App Store的文件大小

19

运行苹果的assetutil:

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

你会得到文件中每个项目的JSON描述。类似这样的:

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

注意行"SizeOnDisk" : 10822

此工具执行有限的.car操作,运行​​以获取详细信息。


Assets.car似乎是一个专有的Apple存档,最早出现在iOS 7中。一些实用程序能够提取使用CoreUI框架的私有类CUICatalog其内容:

也有一个应用程序,读取.car文件:crunch 9 $,15天试用版

运行strings Assets.car返回

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

运行find的Xcode-β内返回/Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Xcode/Overlays/IBCocoaTouchImageCatalogTool,这是一个模拟器可执行文件(I386 + x86_64的)。没有进一步调查,但我敢打赌,如果你在模拟器中运行它,这个工具可以打开.car档案。