设为首页 加入收藏

TOP

iOS9 App Thinning(应用瘦身)功能介绍(一)
2017-10-11 13:57:28 】 浏览:2825
Tags:iOS9 App Thinning 应用 瘦身 功能 介绍

iOS9 发布后,产生了一个使 App Thinning 无法正常运行的 bug。在iOS9.0.2 版本中,这个 bug 已经被修复,App Thinning 已经可以正常使用。当你从应用商店(App Store)下载应用时,请注意这点。
iOS9 推出之后,大受欢迎。仅仅数周,已经有超过半数的 iOS 设备安装了这一新系统。这是 iOS 历代版本中采纳速度最快的—甚至打破了 2013 年 iOS7 创下的记录。
关于 iOS9,笔者最近发表了一篇名为Search APIs and SFSafariViewController的文章,今天,笔者将继续探讨 iOS9 上另一个令人兴奋的功能——App Thinning(应用瘦身)。在这篇教程里,我们将探讨 App Thinning 之所以重要的原因,以及如何在你自己的 App 上使用这一令人兴奋的功能。

根据 WWDC(苹果全球开发者大会)的发布,App Thinning 是一项可以改变整个下载进程的新技术。许多用户反应,流量费用过高、iOS 设备的存储空间有限,而下载速度却不断提升,为了适应这些问题,App Thinning 变得十分值得学习。此外,App Thinning 的发布已经推迟了,现在正是学习关于这一新技术的最好时机。

前提条件
在本教程中,笔者假设你有 Xcode 实践经验而且知道如何使用 IDE。如果你对此不甚了解或者不确定 IDE 是什么,也许你会想看看与此相关的优秀免费课程
此外,笔者也假设你知道如何在 App Store 上发布 app,也知道如何使用苹果的Beta 应用测试服务 testflight。笔者不会具体说明如何使用 testflight,所以如果你对 testflight 不熟悉或者不清楚上传发布 app 的大体流程,笔者推荐你先看一看这篇 AppCoda 上的文章除了这些和你学习的意愿之外,就没有任何前提条件了。
以此为前提,让我们开始吧。

App Thinning 的介绍

现今,市面上的 iOS 设备多种多样,屏幕尺寸和分辨率更是五花八门,这导致一个app 想在多种屏幕上都能视觉效果良好,就需要大量的优化资源(即 PNG 格式,JPEG 格式以及矢量 PDF 文件等)以匹配不同尺寸的屏幕。更糟糕的是,这导致用户的下载量大幅增加。(之前的 iOS 版本强制要求用户下载整个 app 文件,即使用户使用的是 iPhone,也需要下载他们绝不会使用到的 ipad 图像文件)16g 的iPhone 还是切实存在的(短时间内也不会消失),因此,让你的 App 变得精简而且迅速下载可以确保用户留有足够的空间,并且优化用户体验。App Thinning 让这一切变得可能。
现今,App 不再是由简单的代码和图像组成了。现代应用不仅仅包括可执行的代码,还有不同的 32 位,64 位版本(针对如 arm64, arm7s, 和 arm7 等多种架构的优化),3D 图形技术(如 OpenGL, Metal 等等),还有音频以及其他不同的文件。总之,如今 App 功能极其复杂。这就是 App Thinning 发挥作用的地方。
App Thinning 会自动检测用户的设备类型(即型号名称)并且只下载当前设备所适用的内容。换句话说,如果你使用的是 iPad Mini 1(1x分辨率且非 retina 显示屏)那么只会下载 1x分辨率(下文会有更多介绍)所使用的文件。更强大和更高分辨率的 ipad(如iPad Mini 3或 4)所使用的资源将不会被下载。因为用户仅需下载他/她自己当前使用的特定设备所需的内容,这不仅加快了下载速度,还节约了设备的存储空间。
尽管一开始听起来可能有点复杂,但是笔者会深入了解细节。幸运的是,这项工作的大部分会由 Xcode 和 App Store 负责完成,这使得开发者的生活轻松了许多。因此,本教程的重点在于对 App Thinning 的深刻理解以及其实现技术,并不会有大量的代码。
App Thinning 主要有以下三个方面:App Slicing(应用程序的划分),Bitcode以及按需加载资源。在本教程中,笔者会一一详述每个方面。


App Slicing
关于 App Thinning,本文探讨的第一个方面就是划分问题。根据苹果官方文献的描述「Slicing 是为应用捆绑包创建、分发不同变体以适应不同目标设备的过程。一个变体只包含针对某个目标设备的可执行架构与资源。」 换句话说,App Slicing仅向设备传送与之相关的资源(取决于屏幕分辨率,架构等等)。事实上,App Slicing 负责处理 App Thinning 的主要流程。
当你准备好提交 app 时,通常会(但必须使用 Xcode7,因为它包含支持 App Thinning 的 iOS9 SDK)向 iTtunes Connect 上传 .IPA 或 .App 文件。然后,应用商店分割该应用,创建特定的变体以适应性能不同设备。


On Demand Resources

按需加载资源
想要充分理解 App Thinning,你必须理解按需加载资源(On Demand Resources , ODR)。按需加载资源是在 app 第一次安装后可下载的文件。举例说明,当玩家解锁游戏的特定关卡后可以下载新关卡(和这个关卡相关的特定内容)。此外,玩家已经通过的关卡可以被移除以便节约设备上的存储空间。
开启按需加载资源功能涉及改变 Xcode 中的设置(在编译设置(Build Settings)下),将「启用按需加载资源”选中为 是」 。


Bitcode
App Thinning 的最后一个方面是 bitcode。Bitcode 有些抽象,但在本质上它也是苹果在用户下载前优化app的新方式。Bitcode 使得 app 无论在何设备上都能快速高效地运行。Bitcode 使用最新的编译器自动编译app并且针对特定架构进行优化。(例如,针对 iPhone 6s和 iPad Air 2等 64 位处理器的 arm64)
Bitcode 不会下载应用针对不同架构的优化,而仅下载与特定设备相关的优化,使得下载量更小,同时与前文所述的 App Thinning 技术紧密合作。
Bitcode 是 iOS 上较新的功能,对于新的项目需要手动开启。这可以通过选择Build Settings(编译设置)下的项目设置,将 bitcode 设为 YES 来完成。


在自己的项目中应用 App Thinning
虽然 Xcode 和 App Thinning 负责处理 App Thinning 的主要流程,但是你还是要采取一定的预防措施以确保你的 app 支持这项新技术。首先,你必须使用资产目录。资产目录在大部分 app 上是默认启用的。如果你尚未启用资产目录,现存的许多文件都可以通过下图的方式点击 Xcode 项目设置中“启用资产目录”转移到目录下。

Sprite Atlases 是 Xcode7 中的新特性。Sprite Atlases 本质上就是资产目录的组合,也是 SpriteKit(Xcode用来创建2D游戏的技术)的核心。所以说,如果你使用 SpriteKit,那么 app thinning 就是必须的。

App Thinning 的测试
正如上文所述,Xcode 和 App Store 负责处理大部分的 App Thinning 进程,让这项技术变得真正易于在你的 app 上应用。但是,假如你想测试自己的 app 以确定它已经为 app thinning 做好准备,应该怎么办呢?幸运的是,苹果的 TestFlight 为我们提供了完美的解决方案。
在本教程的后半段,笔者会探讨如何在 TestFlight 上使用 App Thinning。
首先,下载这个几乎空白的项目,将它解压

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇属性动画(显示动) 下一篇事务(隐式动画)

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目