资产目录和根捆绑目录中重复的应用程序图标

Posted

技术标签:

【中文标题】资产目录和根捆绑目录中重复的应用程序图标【英文标题】:App Icons Duplicated in Asset Catalog and Root Bundle Directory 【发布时间】:2018-11-12 00:44:33 【问题描述】:

我注意到,当我使用资产目录来指定我的 ios 应用程序的图标时,生成的应用程序既有包含图标的 Assets.car 文件,也有根捆绑目录中的各个图标文件。

该应用程序将 iOS 9 作为其部署目标。

我通过将项目存档并将其导出(通过 Xcode 的 Organizer 窗口)作为 Ad Hoc 构建并将 App Thinning 选项设置为 iPhone 6s 来检查生成的包。这是在 Xcode 9.3.1 上。

当我 inspect 精简应用程序中的 Assets.car 文件时,我看到它只有大小为 40、58、80、114 和 120 的图标(以及 asset catalog viewer 调用的 200x178 图像ZZZZPackedAsset-2.0 包含嵌入其中的 4 个版本的图标,我测量过它们的大小:42、60、82 和 116)。

bundle 根目录下的图标文件如下:

AppIcon20x20@2x.png AppIcon20x20@2x~ipad.png AppIcon20x20@3x.png AppIcon20x20~ipad.png AppIcon29x29.png AppIcon29x29@2x.png AppIcon29x29@2x~ipad.png AppIcon29x29@3x.png AppIcon29x29~ipad.png AppIcon40x40@2x.png AppIcon40x40@2x~ipad.png AppIcon40x40@3x.png AppIcon40x40~ipad.png AppIcon50x50@2x~ipad.png AppIcon50x50~ipad.png AppIcon57x57.png AppIcon57x57@2x.png AppIcon60x60@2x.png AppIcon60x60@3x.png AppIcon72x72@2x~ipad.png AppIcon72x72~ipad.png AppIcon76x76@2x~ipad.png AppIcon76x76~ipad.png AppIcon83.5x83.5@2x~ipad.png

所以我有两个问题:

    为什么图标资源会被复制为外部 AppIcon*.png 文件和内部 Assets.car 资源?

    为什么单个 AppIcon*.png 包含所有图标,而不仅仅是需要的图标?

我的印象是 iOS 9+ 可以将资产目录用于其图标资产。这仅仅是 Xcode 生成的捆绑包与应用商店中将发生的捆绑包的差异吗?还是我对应用瘦身应用导出选项的工作原理做出了错误的假设?

【问题讨论】:

这篇帖子:***.com/questions/45665987/… 似乎表明可能有一种方法可以让应用图标参与应用细化。但是,除了 wwdc 视频中的简短提及之外,我找不到有关该主题的任何信息。 【参考方案1】:

关于应用程序图标,资产目录是一种节省人力的设备,而不是节省空间的设备。

从历史上看,并不总是有资产目录;相反,设备上的 iOS 系统希望在应用程序包的顶层找到应用程序图标,其高度特定的名称源自 Info.plist 中指定的名称。

您可以自己配置,这就是我们过去必须做的。

但是为了省去您担心的麻烦,您可以选择将应用程序图标放在资产目录中 - 然后应用程序构建过程会为您完成您之前自己会做的事情,编写图标到应用程序包的顶层并修改 Info.plist 以指向它们。

【讨论】:

是的,我曾经自己指定图标。困扰我的是,似乎在资产目录中指定图标会导致应用程序变大,因为图标现在存储在应用程序内的两个不同位置。 如果这真的让您感到困扰,请不要使用图标的资产目录。 问题是,我喜欢应用精简的想法,只包括必要的图标。这就是我切换到资产目录的原因。但是,在这种重复图标的情况下,它似乎违背了目的。我只是想知道这是否真的是应用程序交付给最终用户的方式,或者这只是应用程序细化 Xcode 导出选项的不正确模拟。 苹果的耻辱。两次包含图标资源是非常浪费的!一些 Mac 应用程序包有几十个图标,每个图标都包含各种表示形式,大小可达 1024x1024。在这种情况下,我们可能会谈论几十兆字节。

以上是关于资产目录和根捆绑目录中重复的应用程序图标的主要内容,如果未能解决你的问题,请参考以下文章

适当大小的应用程序图标在资产目录中显示较小

资源包中的资产目录

除了启动图像和应用程序图标之外,我可以使用资产目录来管理图像吗?

如何在 Xcode 5 产品首选项编辑器的资产目录中访问图像(用于文档图标)

资产目录在 Xcode 5 中是不是强制要求应用商店批准

JavaFX 本机捆绑图标 OS X