在iOS中分析Assets.car文件


75

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

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



@borrrden,这不能回答我的问题。我正在寻找分析哪个部分占用更多内存的信息。
拉杰夫2014年

@rajeevprasanna我认为该文件也包含iPhone 6的高档图像!
若奥·努涅斯

Answers:


107

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

提取存档的步骤:

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

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

我下载了此工具,但不知道如何使用?输出文件在哪里?
吉米2015年

我已经通过简短的运行说明为答案添加了一些额外的信息。也许,如果您能正常工作,则可以为鞋子中的其他人更新readme.md。
刘易斯2015年

我按照您的指示进行操作,但它说:cartool:无法执行二进制文件。请指教。谢谢。
吉米2015年

3
几个问题。1)列出其中包含的文件,Assets.car但最后output folder为空。2)您重新运行命令,它会给您Segmentation fault: 11
Adeel

8
此工具不适用于更新的.car文件(来自ios11 SDK)
Carla Camargo,

72

运行苹果的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操作,请运行man assetutil以获取详细信息。


Assets.car似乎是Apple专有的档案,最早出现在iOS 7中。一些实用程序可以使用CUICatalogCoreUI框架的私有类提取其内容:

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

跑步strings Assets.car归来

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

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


61

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

资产目录Tinkerer屏幕截图


当我使用2.3版发行版打开由xCode版本8.0 beta 6(8S201h)构建的.car文件时,它崩溃了Assertion 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请在GitHub上打开一个问题,并提供示例文件。谢谢。
Guilherme Rambo

很抱歉,但这是一个商业项目。.您认为它与资产特别相关吗?我尝试了.cartool(stackoverflow.com/a/29468398/907692),它具有相同的问题
igrek

该文件可能存在某些特定原因,导致此问题。没有文件,我无能为力...
Guilherme Rambo

@GuilhermeRambo我可以通过尝试打开Xcode 8的Assets.car文件来找到确切的错误,该文件位于Xcode.app/Contents/SharedFrameworks/DVTKit.framework/Versions/A/Resources
Allen Zeng

1

Guilherme Rambo说的是正确的,而不是Lewis42。

假设Asserts.car中有一个pdf文件('a.pdf')。

如果使用cartool,文件格式已更改,您将获得三个png文件(a.png / a @ 2x.png / a @ 3x.png)。

但是,如果您使用AssetCatalogTinkerer,则可以预览a.pdf文件(未更改文件格式)。


0

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

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

您可以在此处检查文件大小:iTunes Connect>我的应用程序>您的应用程序>活动>您的生成> App Store的文件大小


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.