美文网首页
安装包瘦身

安装包瘦身

作者: 不如养花 | 来源:发表于2020-04-28 09:00 被阅读0次

    Https和服务器的交互

    1. 服务器通过非对称加密,生成公钥和私钥,将私钥保存在服务器端,将公钥发送给客户端
    2. 客户端收到公钥,然后客户端生成对称加密密钥,使用收到的公钥对密钥进行非对称加密,将加密后的数据传送给服务器
    3. 服务器收到加密后的数据,使用私钥对数据进行解密,将客户端的加密密钥保存到服务器上
    4. 之后的交互都使用对称加密后的数据进行交互
    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.png

    Slicing 是创建、分发不同变体以适应不同目标设备的过程

    其中图片的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
    • 重复文件的删除
    • 大文件压缩
    • 图片管理方式规范
    1. Xcode 提供了两个编译选项来帮助压缩PNG资源,项目引进的PNG资源都自动被Xcode进行压缩了,所以不需要自己再去压缩。
    2. 当你使用bundle方式管理资源,因为bundle是直接拷贝进项目,并不会被Xcode进行压缩,JPG或者其他类型的图片资源可以使用 ImageOptim
      进行无损压缩后导入到Xcode中,为了提高项目建议还是提供PNG格式的图片。
    3. 使用XCAsset管理的资源会被压缩打包成asset.car文件,我们无法获取图片的物理路径,不能使用[UIImage imageWithContentsOfFile:] 的方式来获取图片,对于那些需要使用物理路径方式来访问的图片,还是直接拖到app中进行管理
    • on-Demand Resources
    代码瘦身

    代码的优化,通过删除无用类、无用方法、重复方法等,来达到可执行文件大小的减小。

    找到类和方法的全集
    找到使用过的类和方法的集合
    取2者差集得到无用代码集合
    人工再次确认后,删除即可

    基于可执行文件扫描(LinkMap结合Mach-O找无用代码)

    视频/音频图片资源远端化

    视频/音频等图片资源相对图片来说会大很多,所以建议把视频/音频放在服务端,客户端在使用的时候进行下载或者使用流播放。

    HTML5 远端化

    H5 资源也是建议放在服务端,如果对 H5 加载和离线访问有要求的话,可以使用离线缓存的方式来缓存网页资源到本地。
    iOS 安装包瘦身 (上篇)
    iOS 安装包瘦身 (下篇)

    相关文章

      网友评论

          本文标题:安装包瘦身

          本文链接:https://www.haomeiwen.com/subject/zhyswhtx.html