6

从 iOS 9 开始,iOS 具有“按需资源”(ODR) 功能,允许 Apple 托管可以按需下载的资源,而不是将它们放在应用程序包中。通过使用资源标签标记资产,然后使用NSResourceBundleRequest给定标签请求资产,我们可以通过在需要时将不经常使用的资产远离设备来减少我们的应用程序包大小。

可悲的是,我只能让它与 Xcode 中应用程序目标中特别包含的资源一起使用。有时代码和资源不包含在应用程序目标中,而是包含在共享或外部框架中(例如,通过 Cocoapods 分发的库或用于在 iOS、tvOS、watchOS、macOS 应用程序之间共享代码和资产的共享框架)。理想情况下,由于这些框架最终都嵌入到您的应用程序目标中,Xcode 将能够简单地从嵌入式框架中提取资源并标记它们以供下载。

尽管这些框架目标在其项目文件中具有“资源标签”部分,并且我们仍然可以在这些目标中配置资源标签,但在运行时,资源请求会以NSBundleOnDemandResourceInvalidTagError. Debug Navigator 中的“Disk”窗格也没有显示 On-Demand Resources 部分。

我找不到任何明确说明使用 ODR 是否可以使用外部框架的文档。有谁知道这是否可能,如果可以,如何实现?

4

0 回答 0