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

问题描述 投票:0回答:1

我们正在努力优化应用程序的大小,但有些事情我们无法弄清楚。看起来 Xcode 包含了 SVG 图像的光栅化版本,显着增加了我们应用程序的大小。

鉴于以下步骤:

  1. 在 Xcode 15(或 14.2)中从头开始创建项目
  2. .xcassets
    中添加一个带有“
    Single Scale”和“Preserve Vector data”的SVG(就像这个,注意它是9KB)
  3. 选择团队,然后
  4. 存档
  5. 导出 AdHoc 并选择一个设备来执行
  6. App Thinning(我通常使用 iPhone 14)
  7. 将.ipa更改为.zip,解压.zip并在.app中“显示包内容”
  8. 注意
  9. Assets.car
    大小,
    超过100KB
  10. 运行xcrun --sdk iphoneos assetutil --info Assets.car
    并检查json,注意有一个矢量图像,
    还有图像@1x和@3x,加起来超过90KB(因为这些不是矢量)
为什么 Xcode 在矢量图像的

.car

 部分添加光栅化图像?这会增加我们的应用程序大小一些 MB(我们有很多 SVG),我认为这是不必要的,并且违背了我认为使用矢量的想法。

有人知道为什么会发生这种情况吗?谢谢!

ios xcode svg size ipa
1个回答
0
投票
一个常见的误解是 iOS 13 添加了对资产目录中的 SVG 图像的本机支持。这是不正确的。

Xcode 12 中提供的功能是将 SVG 添加到资产目录,并在构建时创建相关的光栅图像变体。

2020 年发布的 iOS 13(以及 macOS、tvOS 的相关版本)能够在引用 SVG 时识别正确的光栅图像。这就是为什么在使用 SVG 时要求至少以 iOS 13 为目标,而不是因为对 SVG 的任何本机支持。

与将 PDF 添加到资产目录一样,添加 SVG 主要是一种简化工作流程并消除添加错误分辨率作为变体的可能性的方法。

有具有不同级别的 SVG 支持的第三方框架可以满足您的需求,或者您可以返回手动光栅化图像并直接添加变体,这将使您能够更好地控制图像属性。

根据您的目标最低 iOS 级别和(因此最旧的设备),您可能不需要图像的所有变体。

© www.soinside.com 2019 - 2024. All rights reserved.