分析iOS中的Assets.car文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分析iOS中的Assets.car文件相关的知识,希望对你有一定的参考价值。

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

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

答案

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

提取存档的步骤:

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

  • 开放式终端
  • cd /path/to/cartool
  • ./cartool /path/to/Assets.car /path/to/outputDirectory
另一答案

运行Apple的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中。一些实用程序能够使用CoreUI框架的私有类CUICatalog提取其内容:

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

strings Assets.car返回

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

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

另一答案

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

Asset Catalog Tinkerer screenshot

另一答案

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

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

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

另一答案

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

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

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

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

以上是关于分析iOS中的Assets.car文件的主要内容,如果未能解决你的问题,请参考以下文章

解压Assets.car获取App中的图片资源

Mac 如何导出ipa文件中Assets.car包中的切图

Analysing Assets.car file in IOS

如果应用支持 iOS 8 或更早版本,Assets.car 不能包含 16 位或 P3 资产?

如何打开Assets.car文件

资源打包