介绍
分享一款用于分析iOS
ipa包的脚本工具,使用此工具可以自动扫描发现
可修复的包体积问题,同时可以生成包体积数据用于查看。这块工具我们团队内部已经使用很长一段时间,希望可以帮助到更多的开发同学更加效率的优化包体积问题。
背景
APPAnalyze
工具最早诞生主要是为了解决以下包体积管理的问题:
对于定位下沉市场的APP
来讲,包体积是一个非常重要的性能指标,包体积过大会影响用户下载APP
的意愿。但是在早期我们缺少一些手段帮助我们更高效的去进行包体积管理。
自动发现问题
-
提升效率
- 人工排查问题效率低,对于常见的问题尽可能自动扫描出来。并且对于组件化
工程来讲,很多外部组件是通过Framework
方式提供,没有仓库源码权限用于分析包体积问题。 -
流程化
- 形成自动化的质量流程,添加到CI流水线
自动发现包体积问题。
数据指标量化
-
包体积问题
- 提供数据化平台查看每个组件的包体积待修复
问题 -
包体积大小
- 提供数据化平台查看每个组件的包体积占比,包括总大小
,单个文件二进制大小
和每个资源大小
。可以针对不同的APP
版本进行组件化粒度的包体积数据对比,更方便查看每个版本的组件大小增量。
实现方式
我们选择了不依赖源码而是直接扫描二进制库的方式来实现这个能力,总体的执行流程一下:
提示:基于组件化工程的扫描方式内部支持,只是暂时不对外开放。
使用指南
安装
无需安装。通过下载链接直接下载终端可执行命令文件APPAnalyzeCommand
到本地即可使用。
使用
$ /Users/Test/APPAnalyzeCommand --help
OPTIONS:
--version <version> 当前版本 1.0.0
--output <output> 输出文件目录。必传参数
--config <config> 配置JSON文件地址。非必传参数
--ipa <ipa> ipa.app文件地址。必传参数
-h, --help Show help information.
执行
打开终端程序直接执行以下shell
指令,即可生成ipa
的包体积数据以及包体积待修复问题。
提示:不能直接使用
AppStore
的包,AppStore
的包需要砸壳。建议尽量使用XCodeDebug
的包。
/Users/Test/APPAnalyzeCommand --ipa ipas/JDAPP/JDAPP.app --output ipas/JDAPP
提示:如果提示
permission denied
没有权限,执行sudo chmod -R 777 /Users/a/Desktop/ipas/APPAnalyzeCommand
即可。
生成产物
指令执行完成以后,会在ouput
参数指定的文件夹生成APPAnalyze
文件夹。具体文件介绍如下:
包体积信息
app_size.html
- 展示ipa
每个framework
的包体积数据,可直接用浏览器打开。
提示:按照主程序和动态库进行粒度划分
framework_size.html
- 展示单个framework
所有的包体积数据,二级页面不要直接打开
。
提示:
XCode
生成Assets.car
时会将一些小图片拼接成一张PackedAssetImage
的大图片。
package_size.json
-ipa
包体积 JSON 数据
包体积待修复问题
app_issues.html
- 展示ipa
每个framework
的包体积待修复问题数量,可直接用浏览器打开。
提示:按照主程序和动态库进行粒度划分