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

Posted

技术标签:

【中文标题】接近大小限制 - 手表应用程序的大小(50MB 限制令人头疼。)【英文标题】:Approaching Size Limit - The size of watch application (50MB limit is headache.) 【发布时间】:2017-04-07 12:28:27 【问题描述】:

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

1) watchOS 中是否可以使用按需资源?

2) 我的资源(图像、自定义字体)制作 2 个副本,每个副本是手表应用程序,另一个是手表扩展程序。如何解决?

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

为 watchOS4 编辑:

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

【问题讨论】:

【参考方案1】:

以下事情可以帮助减小尺寸:

1) 尝试使用 swift 或 Objective c

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

3) 启用位码

4) 进入扩展的项目设置,将 Always Embed Swift Standard Libraries 设置为 No

更新 WatchOs4:

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

libSwiftCode 在 watchos3 中是 16.1mb 现在是 23.1mb

libSwiftFoundation 在 watchos3 中是 6.2mb,现在是 9.2mb

注意:

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

【讨论】:

【参考方案2】:

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

【讨论】:

是的,这是可能的,但如果我正在为图像制作动画,那么我需要在两个目标中添加这些图像。 为什么需要将它们添加到两个目标?您可以在 WatchKit 扩展或应用程序包中使用动画图像;如果您需要在代码中使用它们,那么您可以在每次需要使用它们时简单地在代码中使用它们。【参考方案3】:

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

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

要解决您的第三个问题,请转到扩展程序的项目设置,并将 Always Embed Swift Standard Libraries 设置为“否”。

另外,从手表扩展项目中删除 Newtonsoft.Json 库(如果存在)

【讨论】:

以上是关于接近大小限制 - 手表应用程序的大小(50MB 限制令人头疼。)的主要内容,如果未能解决你的问题,请参考以下文章

想要发送不限大小的邮件吗?看看这个吧

将 Square Picasso 的缓存大小限制为最大 60MB

如何在 phpMyAdmin 中增加导入大小限制

小程序2mb限制

EXCHANGE2010修改owa上传附件大小限制后报错

iOS 的实际大小限制 - “应用程序超过 100mb 下载限制?”