Hi 我的个人项目扫雷Elic 无尽天梯梦见账本
类别
游戏
财务
Elic
Umemi
前言
软件瘦身是个老生常谈的议题 。苹果其实对于软件瘦身也有着自己的一些计划。本文就将结合官方文档进行阐述。
一、 什么是软件瘦身 ?
在 iOS, tvOS, 上 和流程平台根据读者终端和流程平台的性能对App进行裁剪优化。这个优化的bbmarkets官网流程就是 软件瘦身。
二、 剪切 (iOS, tvOS)
是针对不同终端不同平台创建安排变体软件包的流程。每个变体只涵盖当前终端和流程平台所需要的资源和可落实资料 。你只需要打包提交完整平台的软件到 。 将会根据不同的终端及流程平台平台创建分发不同的变体。
用 asset 储存图像资源以便 为不同的变体选择资源启动 。当读者安装软件时,蓝莓外汇市场官网将会获取安装一个针对其终端平台平台的变体 。
Xcode 将会在本地 build 和 run 的时候模拟进行 。当你 的时候 Xcode 将会涵盖所有构建平台并允许你导出变体包 。
下图很好的演示了这个流程
思考
这里提到 asset 会根据架构不同进行资源启动,所以我们平时不要把资源直接放到 中,而跳过了这个优化的流程 。
三 、
是编译器的一层间接 。你提交到 的进入了的 App 将会在 被 编译 和 连接。涵盖了 将会使Apple 可以在将来再优化你的众汇外汇交易软件包而不用再再次提交。
对于 iOS 软件 是默认非必须选的 。 和 tvOS 是必选的 。如果想要拥护 那么你所有用到的库都要拥护 。
符号表
Xcode 默认会隐藏你的软件的符号表,所以对于 Apple 它是不可见的 。当你提交你的 App 到 的时候你可以选择涵盖符号表``。涵盖符号表会使Apple 为你供给崩溃日志 。
如果你想要自己整理崩溃日志,那么你可以不提交符号表。你可以在发布软件后获取 编译后的符号表 。
四 、 ODR: On- (iOS, tvOS)
这些资源主要是图像和声音 。 将其保存运维在苹果的服务器。 将会按需利用资源优化变体包。后面将以 ODR 进行简称。
ODR 供给了更好的读者体验:
4.1 利用须知
App 主管请求这些资源,流程平台主管 获取 和 存储。软件利用资源,然后请求 。获取后,资源可能会通过多个开展周期保留在终端上 ,使访问速度更快。
资源可以是 拥护的任何类别的资源 ,但 可落实程序 除外。Table 1-1 呈现拥护按需资源类别,并指示这些类别是否以 资料 或 Asset 涵盖在项目中 。
Table 1-1: On- types
Data file
✓
✓
Image
✓
✓
✓
✓
scene
✓
atlas
✓
✓
Apple TV Image Stack
✓
✓
数据资料可以涵盖任何类别的数据 ,但可落实的IC外汇官网 Swift 、 -C、 C 或 C++ 代码除外。脚本语言生成的资料 可以是按需启动的。
4.2 ODR 的好处软件资源懒启动。远程存储很少利用的资源。软件内购买资源的远程存储。五、 ODR 标签的工作原理
通过分配 一个或多个标签 来识别开发流程中的按需启动资源。标签 是您创建的字符串标识符 。您可以利用 标签的名称 来识别软件中如何利用涵盖的资源 。例如 在游戏中,利用标记 level-5 来应对与 level-5 有关的每个资源。
当流程平台需要更多存储时5.1 游戏举例
继续利用游戏示例 ,在分为多个级别的游戏中,读者只需要与读者目前玩的水平和下一个可能级别有关的资源。
下图呈现一个软件,其中涵盖所有级别的所有资源。
通过为不同级别以及不需要涵盖在软件中的其他共享资源创建标签 ,可以缩小软件包的大小。
下图呈现了一个更小的软件 ,其标记的资源集托管在 App Store 上 。
5.2 额外配置
您可以指定
六 、 ODR 的生命周期
软件按标签请求,而不是特定的资源 。
6.1 共享 ODR
当您利用 ODR 开发软件时,您可能会注意到请求一个标签会并且获取的其他标签有关的资源 。这是因为流程平台与用于获取共享资源的优化资产包配合利用。一个标签可能存在多个 Asset 中。构建软件时,Asset 由 Xcode 生成 。
6.2 流程
1.软件程序从流程平台请求标签 。流程平台将所要求的标签转换为涵盖有关资源的一组资产包 。
在下图中软件请求与 和 标签有关的资源 。
2.标签的 Asset 位于本地存储中 ,则生命周期移动到第6步 。
3.标签的一个或多个 Asset 托管在 App Store 上,原因要么是它是软件的第一次发布,要么是之前启动在终端上的资源被清除(参见下面的 第9步)。
在下图中,所有 ODR 都在软件商店中。
4.流程平台开展获取与尚未存储在本地存储中的有关的资源 。
5.与所要求的标签有关的 Asset 资源完成获取到终端。
在下图中,与 和 标签有关的资源将获取到了终端中。
6.如果成功获取了与所要求的标签有关的资源,或者如果资源已在终端存储中 ,则流程会提升 Asset 的引用计数 ,并通报软件所请求的标签可用。
在下图中 ,软件程序被告知与 和 标签有关的资源是可用的。
标签可用后,软件将利用与这些标签有关的资源 。ODR 的访问方法与与获取的软件捆绑的资源相同。下图呈现获取的资源作为软件程序的虚拟成员 。
7.软件程序通报流程平台 ,它已经完成了对请求标签的利用 。
8.流程平台在本地存储中释放标签。这是通过下降与标签有关的 Asset 的引用计数来完成的。
对终端上已利用的标签进行另一个请求将移动到 第1步。
9.流程平台从本地存储中清除与 Asset 有关的缓存资源 。
七、 总结
本文只是初步的对 ODR 有了一个整体初步的了解。很多细节还并没有涉及比如项目怎么配置 ,代码怎么写 。我将在后续素材中继续深入探索。