接近大小限制 - 手表应用程序的大小(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 方法中按名称引用的资源,例如 WKInterfaceImage
的 setImageNamed(_:)
方法,您应该将它们存储在手表应用程序本身中。对于通过路径或使用init?(named:)
等UIImage
方法在代码中加载的任何资源,您需要将它们放入您的WatchKit 扩展中。
【讨论】:
是的,这是可能的,但如果我正在为图像制作动画,那么我需要在两个目标中添加这些图像。 为什么需要将它们添加到两个目标?您可以在 WatchKit 扩展或应用程序包中使用动画图像;如果您需要在代码中使用它们,那么您可以在每次需要使用它们时简单地在代码中使用它们。【参考方案3】:要回答您的第一个问题,是的,按需资源是 watchOS 的一个可用选项。见here和here
此外,上面的第一个链接描述了“切片”,它允许您为目标设备指定资源,从而减少您的整体应用占用空间。
要解决您的第三个问题,请转到扩展程序的项目设置,并将 Always Embed Swift Standard Libraries 设置为“否”。
另外,从手表扩展项目中删除 Newtonsoft.Json 库(如果存在)
【讨论】:
以上是关于接近大小限制 - 手表应用程序的大小(50MB 限制令人头疼。)的主要内容,如果未能解决你的问题,请参考以下文章