前言
该文章为苹果原文档意译过来,加入了一些自己的理解,有些地方不是很通顺,若有问题可以留言,我加以修正。
什么是应用瘦身?
这是苹果商店和操作系统在用户安装iOS,tvOS和watchOS应用到相应的用户设备上时,根据要安装应用的设备机型,操作系统版本,对应用进行相应的裁剪,使应用可以在该设备上占用最小的磁盘空间正常的运行起来。
这个优化的过程,我们称作为应用瘦身。这可以让你开发的APP最大化在不同的设备上使用,同时占据最小的磁盘空间,并且可以兼容苹果之后发布的更新。这样下载会更加快速,给其他的应用留有更多的空间,同时提供给用户更加良好的体验。
切片化(iOS, tvOS)
切片是在开发和实现app保证不同的手机设备和不同的操作系统app的包体大小是变化的这个过程。一个包体变量(variant)只会包括目标机型或者系统版本所需要的架构和资源。你可以持续的开发并且上传你的应用到App Store Connect。苹果商店会根据你的应用支持的机型和操作系统版本来创建不同的包体。使用 asset目录资源,这样商店可以更好的选取图片资源,GPU资源和一些其他的数据资源来适配每一个包体变量。当用户下载一个应用,那么和用户这个设备相关的机型和操作系统包体变量会被下载并且安装到用户的设备上。
Xcode 模拟切片是在开发期间,所以你可以在本地创建和测试包体变量。当你在Xcode上运行真机或者模拟器的时候,Xcode会切片你的应用。当你创建一个archive包的时候,Xcode会包括你的应用支持的所有的系统版本,但是Xcode允许你从archive导出不同的版本。
注意:应用切片技术只支持iOS设备和TVOS 9.0以后的设备。否则商店会提供给用户通用包体版本universal variants。通用包体版本(universal variants)也可以通过Mobile Device Management (MDM), Apple School Manager 统一购买或者Apple Business Manager可以获取,或者直接使用iTunes 12.6之前的版本下载。
imageBitcode
Bitcode是一个编译过的程序的中间代码。你上传到商店的应用所包含的bitcode会被编译和链接到苹果商店。通过这个Bitcode文件,苹果在以后(若有系统更新变动)可以重新优化你的应用机器码app binary,你不必重新提交一个新的应用版本到商店。
对于iOS应用,bitcode文件是默认的,但是它是可选的。但是对于watchOS 和 tvOS的应用,bitcode文件是必须的。如果你选择提供bitcode文件,那么包括在你应用工程中的所有应用(target)和框架都需要提供bitcode文件。
Xcode默认是选择隐藏你的应用symbols,所以对于苹果是不可读的。当你上传应用到商店,你就可以选择包含的symbols。当你的应用上传到TestFlight或者发布到商店时,包含进去的symbols可以让Apple发送崩溃日志给你们的应用。不必再上传symbols,你就可以搜集和整理到你自己的崩溃日志。另外,你可以在发布你的应用之后下载 dSYM文件(https://help.apple.com/xcode/mac/11.0/index.html?localePath=en.lproj#/devef5928039)。
按需加载资源 (iOS, tvOS)
按需加载资源是类似于图片或者声音这样的资源文件,你可以在分组中标记关键字。商店把这些资源托管到服务器上为你管理和下载。商店也会将这些资源切片,为app优化包体变量。
按需加载资源提供更好的用户体验:
-应用的包最小化所以下载会更加快速,可以第一时间体验。
-当用户浏览你的应用程序的时候,如果有需要,按需加载资源是在后台下载的。
-操作系统会清除掉按需加载的资源,当它们不会再被使用或者磁盘空间低的时候。
网友评论