是啥影响了 IOS 应用程序中的资产大小,我该如何缩小它?

Posted

技术标签:

【中文标题】是啥影响了 IOS 应用程序中的资产大小,我该如何缩小它?【英文标题】:What contributes to the size of assets in an IOS App and how can I shrink this?是什么影响了 IOS 应用程序中的资产大小,我该如何缩小它? 【发布时间】:2015-02-03 15:16:27 【问题描述】:

我有一个内置于 Xcode 6 的 ios 应用程序,它使用资产目录来存储 71MB 的图像。我只在我的资产目录中包含了@3x 图像,以尝试将应用程序的大小保持在 100MB 以下。 @3x 规则的唯一例外是我为 AppIcon 组添加了 @1x 和 @2x 图像。

所有图片都是 .JPG 文件,除了 AppIcon 文件是 .png 文件。

当我归档并创建一个 .IPA 文件时,IPA 的大小为 117MB。当我打开并查看 .IPA 中 Asset.car 文件的大小时,我发现它是 130MB。将此与项目中 71MB 的资产目录进行对比。我指出这一点是为了清楚的是,占用 40 MB 的不是其他编译代码。

我想归档这个应用程序,以便文件大小尽可能保持在 80-90-MB 以下。考虑到 70MB 的资产,IPA 应保持在 100MB 以下,但我想知道如何完成此操作,或者我可能需要采取或审查哪些其他步骤,以了解为什么我在 IPA 中为 70MB 的图像获得 130MB 的资产文件.

【问题讨论】:

查看 ipa 中的资产与资产目录中的资产是更多还是更大?如果是后者哪个更大? 您使用的是 PNG 还是 JPEG?如果您使用 PNG,您可以将其添加到资产目录中,它会为您压缩它们并或多或少地将它们转换为图像映射。当我们尝试在资产目录中使用 JPEG 时,我们的应用程序遇到了类似的问题,我们最终将它们拉出来并将它们放入 Resources 文件夹中。 @cwitty- 我澄清了文件类型。 @zaph-IPA 中的 Assets.car 文件为 132.1MB,而项目中的 Assets Catalog 文件夹大小为 70MB。 app ipa Asset Folder中的文件也是jpg吗?还是其中一些已更改?也许是不同的压缩设置。您需要将源项目中的一些文件与 ipa 进行比较。 【参考方案1】:

有一个新的 CAR 工具:iOS-Asset-Extractor。这似乎是比下面的“cartool”更好的解决方案。

获取cartool,构建并运行您的 Assets.car 文件。这将创建一个包含 Assets.car 中的图像文件的目录。它是一个简单的命令行工具。不完美,但这应该可以帮助您了解正在发生的事情。

然后与您的期望进行比较,希望您能够弄清楚发生了什么..

据我了解,.jpg 文件被转换为 .png。如果您的资产很大,请考虑直接包含它们或作为文件夹参考。如果您正在阅读代码中的图像,则尤其如此。

【讨论】:

【参考方案2】:

Assets.car is 6 times larger than actual Images.xcassets folder when archived 的文章似乎是答案。

我的资产目录中的整个 JPEG 集都转换为更大的 PNG。我将除我的 AppIcons 和 LaunchImage 之外的所有内容都从资产目录中转换为普通文件夹。所以那时我有一个装满 JPEG 的文件夹和一个小型资产目录。

当我创建一个存档时,它只有 67 MB,小得多!

【讨论】:

这似乎不再是这种情况了。我在链接的问题中发表了评论。您最近尝试过 Xcode 7 吗? @seabass 我没有,但这个问题是专门针对 xcode6 标记的​​。

以上是关于是啥影响了 IOS 应用程序中的资产大小,我该如何缩小它?的主要内容,如果未能解决你的问题,请参考以下文章

iOS:资产目录中的启动图像上的黑线

Flutter iOS 应用程序大小增加而不更改资产/库

iOS:以像素为单位获取显示的图像大小

iOS资产大小及设计方法

iOS - 处理数据模型更改的正确方法是啥?

iOS On Demand Resource 错误“资产 URL 已过期”(AssetErrorDomain 代码 6)是啥意思?