Https和服务器的交互
- 服务器通过非对称加密,生成公钥和私钥,将私钥保存在服务器端,将公钥发送给客户端
- 客户端收到公钥,然后客户端生成对称加密密钥,使用收到的公钥对密钥进行非对称加密,将加密后的数据传送给服务器
- 服务器收到加密后的数据,使用私钥对数据进行解密,将客户端的加密密钥保存到服务器上
- 之后的交互都使用对称加密后的数据进行交互
Https 原理
https 就是http协议家里一个SSl协议的加密处理,SSL证书就是遵循SSL协议,由受信任着的数字证书颁发机构CA。
https
iOS瘦身之道
1.App Thinning
是iOS9 以后引入的一项优化,自动降低分发到具体用户时,所需要下载的App大小。其中包括三项主要功能:Slicing、Bitcode、On——Demand Resources
Slicing
当像 App Store Connect 上传ipa后, App Store Connect 构建过程中,会自动分割该App,创建特定的变体以适配不同的设备。然后用户从 App Store 中下载的安装包,即这个特定的变体,这一过程叫做Slicing
image.pngSlicing 是创建、分发不同变体以适应不同目标设备的过程
其中图片的2x,3x的细分,要求图片在Assets中管理。Bundle内的则会同时包含。尽量使用XCAssect来管理文件
Bitcode
当我们把携带 BitCode 的 App 提交到 AppStore 后,苹果会提取出可执行文件中的 BitCode 段,然后针对不同的 CPU 架构编译和链接成不同的可执行文件变体(Variant),不同 CPU 架构的设备会自动选择合适的架构的变体进行下载。而在 BitCode 之前没我们都是把所有需要的 CPU 架构集合打包成一个 Fat Binary,结果就是用户最终下载的安装包之中有很多冗余的 CPU 架构支持代码。
BitCode 一致性要求
一致性要求意味着工程开启 BitCode 之后必须要求所有打进 Bundle 的 Binary 都需要支持 BitCode,也就是说我们依赖的静态库和动态库都是含有 BitCode 的,不然就会打包失败。
on-Demand Resources
iOS9以后,可使用该功能
即将一部分图片放置到苹果服务器上,不随着app的下载而下载,直到用户真正进入到某个页面才下载这些资源文件
应用场景:相机应用到贴纸滤镜、关卡游戏等
2. 包体积
- .ipa (iOS Application Package):iOS 应用程序归档文件,即提交到 App Store Connect 的文件
- .app (Application):应用的具体描述,即安装到 iOS 设备上的文件
资源优化
- 无用资源的删除
FengNiao - 重复文件的删除
- 大文件压缩
- 图片管理方式规范
- Xcode 提供了两个编译选项来帮助压缩PNG资源,项目引进的PNG资源都自动被Xcode进行压缩了,所以不需要自己再去压缩。
- 当你使用bundle方式管理资源,因为bundle是直接拷贝进项目,并不会被Xcode进行压缩,JPG或者其他类型的图片资源可以使用 ImageOptim
进行无损压缩后导入到Xcode中,为了提高项目建议还是提供PNG格式的图片。 - 使用XCAsset管理的资源会被压缩打包成asset.car文件,我们无法获取图片的物理路径,不能使用[UIImage imageWithContentsOfFile:] 的方式来获取图片,对于那些需要使用物理路径方式来访问的图片,还是直接拖到app中进行管理
- on-Demand Resources
代码瘦身
代码的优化,通过删除无用类、无用方法、重复方法等,来达到可执行文件大小的减小。
找到类和方法的全集
找到使用过的类和方法的集合
取2者差集得到无用代码集合
人工再次确认后,删除即可
基于可执行文件扫描(LinkMap结合Mach-O找无用代码)
视频/音频图片资源远端化
视频/音频等图片资源相对图片来说会大很多,所以建议把视频/音频放在服务端,客户端在使用的时候进行下载或者使用流播放。
HTML5 远端化
H5 资源也是建议放在服务端,如果对 H5 加载和离线访问有要求的话,可以使用离线缓存的方式来缓存网页资源到本地。
iOS 安装包瘦身 (上篇)
iOS 安装包瘦身 (下篇)
网友评论