接近大小限制 - 手表应用程序的大小(50MB 限制令人头疼。)

Approaching Size Limit - The size of watch application (50MB limit is headache.)

我们的应用程序达到了大约 49MB,我们还没有完成一半。所以它肯定会超过 50MB 的限制。我有几个问题如下。

1) watchOS 可以实现按需资源吗?

2) 我的资源(图像、自定义字体)制作了 2 个副本,每个副本是 watch app,另一个是 watch extension。如何解决?

3) Swift 核心和其他 swift 框架消耗了约 28MB 的 space。有什么办法可以禁用它吗? (PS。我们禁用了位码)

为 watchOS4 编辑:

之前我们的应用程序大小为 44.3 MB,但当我们从 xcode9 生成 IPA 时,大小增加到 54.5。

要回答您的第一个问题,是的,按需资源是 watchOS 的一个可用选项。参见 here and here

此外,上面的第一个 link 描述了 'slicing',它允许您为目标设备指定资源,从而减少您的整体应用占用空间。

要解决您的第三个问题,请转到扩展程序的项目设置,并将始终嵌入 Swift 标准库设置为 'No'。

另外,从 watch 扩展项目中删除 Newtonsoft.Json 库,如果它存在的话

您绝对可以节省 space,方法是仅在手表应用或手表扩展程序中包含资源,而不是同时在两者中包含资源。对于故事板中使用的资源或在 WatchKit 方法中按名称引用的资源,例如 WKInterfaceImagesetImageNamed(_:) 方法,您应该将它们存储在手表应用程序本身中。对于通过路径或使用 UIImage 方法(例如 init?(named:))在代码中加载的任何资源,您需要将它们放入您的 WatchKit 扩展中。

以下内容有助于减小尺寸:

1) 尝试使用 swift 或 objective c

2) 根据需要在手表或手表扩展中添加资产。

3) 启用位代码

4) 转到扩展的项目设置,并将 Always Embed Swift Standard Libraries 设置为 No.

更新 WatchOs4:

我们调查了 watchos4 的大小增加。最后,我们发现 dylibs 消耗内存。

libSwiftCode was 16.1mb in watchos3 now it's 23.1mb

libSwiftFoundation was 6.2mb in watchos3 now it's 9.2mb

注:

从 watchOS4 开始,大小增加了 25MB,所以现在手表应用大小限制为 75MB,而不是旧的 50MB