分析iOS中的Assets.car文件

Raj*_*eev 67 iphone ios ios6 ios7

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

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

Lew*_*s42 105

该工具可以提取.car存档:https://github.com/steventroughtonsmith/cartool

提取存档的步骤:

从github下载zip后,在Xcode中编译它以生成命令行工具.然后展开Products组并右键单击该cartool文件并在finder中找到它.然后,您可以像这样运行该工具:

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

  • 此工具不适用于较新的 .car 文件(来自 ios11 SDK) (10认同)
  • 几个问题。1) 它列出了包含在`Assets.car` 中的文件,但最后`output folder` 是空的。2)您重新运行该命令,它会给您“分段错误:11”。 (3认同)

Jan*_*ano 59

运行Apple的assetutil:

xcrun --sdk iphoneos assetutil --info Assets.car
Run Code Online (Sandbox Code Playgroud)

您将获得文件中每个项目的JSON描述.像这样的东西:

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

注意这一行"SizeOnDisk" : 10822.

此工具执行有限的.car操作,运行man assetutil详细信息.


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

还有一个应用程序读取.car文件:紧缩 9美元,15天试用

strings Assets.car回来了

@(#)PROGRAM:CoreUI  PROJECT:CoreUI-475.1.1
IBCocoaTouchImageCatalogTool-9.0
Run Code Online (Sandbox Code Playgroud)

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


Gui*_*mbo 50

如果要浏览和提取资产目录,还可以使用我的应用程序资产目录Tinkerer

资产目录Tinkerer截图


yoA*_*ex5 6

打开Assets.car

[资产.car文件]

您可以尝试在线工具(Assets.car Asset Extractor Online),或适用于 Mac 的QLCARFiles QuickLook 插件

并使用 assetutil 工具仔细检查它

xcrun --sdk iphoneos assetutil --info <path_to_Assets.car>
Run Code Online (Sandbox Code Playgroud)