iOS应用程序大小比使用SVG的预期大得多

fkvaft9z  于 5个月前  发布在  iOS
关注(0)|答案(1)|浏览(52)

我们正在优化我们的应用程序的大小,有一些我们不能弄清楚。它看起来像Xcode包括我们的SVG图像的光栅化版本,显着增加我们的应用程序的大小。
鉴于这些步骤:
1.在Xcode 15(或14.2)中从头开始创建项目
1.在.xcassets中添加一个SVG,带有“Single Scale”和“Preserve Vector data”(与this one一样,请注意它是9 KB)
1.选择团队,然后选择存档
1.导出AdHoc并选择设备进行App Thinning(我通常使用iPhone 14)
1.将.ipa更改为.zip,将.zip和.app中的“显示包内容”更改为. zip
1.注意Assets.car大小,超过100 KB
1.运行xcrun --sdk iphoneos assetutil --info Assets.car并检查json,注意有一个矢量图像,还有@1x和@3x的图像,加起来超过90 KB(因为这些不是矢量)
为什么Xcode要在.car中添加光栅化的图像,除了矢量图像?这会增加我们的应用程序大小一些MB(我们有很多SVG),我认为这是不必要的,并且在我看来违背了使用矢量的想法。
有人知道为什么会发生这种情况吗?谢谢!

qnakjoqk

qnakjoqk1#

一个常见的误解是iOS 13在资产目录中添加了对SVG图像的原生支持。这是不正确的。
Xcode 12中提供的功能是将SVG添加到资产目录中,并在构建时创建相关的光栅图像变体。
2020年发布的iOS 13(以及macOS、tvOS的相关版本)能够在引用SVG时识别正确的光栅图像。这就是为什么在使用SVG时至少需要针对iOS 13,而不是因为对SVG的任何原生支持。
与将PDF添加到资源目录一样,添加SVG主要是简化工作流程和消除添加不正确分辨率作为变体的可能性的一种方式。
有第三方框架提供不同级别的SVG支持,可以满足您的需求,或者您可以返回手动光栅化图像并直接添加变体,这将给予您对图像属性的更多控制。
根据最低iOS级别和(因此是最旧的设备),您可能不需要图像的所有变体。

相关问题