接近大小限制 - 手表应用程序的大小(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 方法中按名称引用的资源,例如 WKInterfaceImage
的 setImageNamed(_:)
方法,您应该将它们存储在手表应用程序本身中。对于通过路径或使用 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
我们的应用程序达到了大约 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 方法中按名称引用的资源,例如 WKInterfaceImage
的 setImageNamed(_:)
方法,您应该将它们存储在手表应用程序本身中。对于通过路径或使用 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