工作中在接入一个网络安全防护sdk时,sdk方提供的是Framework压缩文件,里面包含的是编译后的二进制文件和头文件。当看到二进制文件有20M时,就会怀疑sdk太大,导致最终App的体积增长过多。后续分析后,虽然二进制文件有20M,但是实际造成的App体积增长应该只有2M左右。这个二进制文件其实就是一个静态库.a文件。下面解释下这个二进制文件有20M,但造成app实际的体积增长只有2M的原因。
BitCode
简单解释BitCode就是一种LLVm的中间编码,只要有BitCode,在没有源代码的情况下,我们都能直接生成最终的可对应于各个cpu架构可执行文件。
所以在上传到苹果商店时,如果我们同步上传了bitcode,后续如果iphone的cpu架构变更,譬如从arm变成其他架构,这个时候都不需要开发重新编译打包上传。apple可以用bitcode直接生成对应架构的app.
详情链接:https://juejin.cn/post/6968272595686785031
判断分析步骤
分析framework的体积主要是2部分,一个是bitcode,一个是支持的cpu架构数量。
Bitcode分析:假设Framework中的静态库文件名称为xxxx,在Mac下使用系统工具otool(用于查看object file的工具)
otool -l xxxx | grep __LLVM | wc -l
如果输出的数字不为0,就表示带有Bitcode
CPU架构数量分析:
使用mac自带的命令行工具file来查看xxxx文件:
file xxxx
会输出如下:
xxxx: Mach-O universal binary with 4 architectures: [arm_v7:current ar arch
iOS SDK大小分析:BitCode与CPU架构对App体积的影响

本文介绍了如何分析iOS Framework的体积,特别是BitCode和CPU架构对其大小的影响。通过otool工具检查BitCode的存在,以及使用file命令查看支持的架构数量。作者发现,尽管静态库文件有20M,但在实际App中只增加了约2M,这归因于BitCode和多架构支持。当移除BitCode并仅保留arm64架构时,可以进一步减小体积。通过比例估算,集成带有Bitcode的SDK到App后,增加的体积大约是原始大小的38.3%除以CPU架构数量。
最低0.47元/天 解锁文章
291

被折叠的 条评论
为什么被折叠?



