启动时长是用户对一款APP的第一印象,所以启动耗时时长也是优化的重要方面,那么怎样使用u-apm对android启动耗时分析,以及具体的优化方向有哪些!

一、App启动过程

1、解析Info.plist

加载相关信息,例如如闪屏

沙箱建立、权限检查

2、Mach-O加载

如果是胖二进制文件,寻找合适当前CPU类别的部分

加载所有依赖的Mach-O文件(递归调用Mach-O加载的方法)

定位内部、外部指针引用,例如字符串、函数等

执行声明为attribute((constructor))的C函数

加载类扩展(Category)中的方法

C++静态对象加载、调用ObjC的 +load 函数

3、程序执行

调用main()

调用UIApplicationMain()

调用applicationWillFinishLaunching

二、启动方式

首次启动:App安装后的第一次启动,属于特殊的冷启动,记为首次启动

冷启动:App结束进程,或退出到后台,进程被系统回收后,再次启动的过程

热启动:App程序从后台被唤起,或从其他 App界面切换回来的过程

三、u-apm启动耗时分析

启动分析是通过提供详细的启动趋势分析、慢启动情况、启动崩溃数据。帮助开发者精准把控应用的启动性能状态,从源头减少用户流失。其中:

1、启动趋势分析:能够展示当前筛选维度和时间状态下的启动次数、平均耗时、以及分位数。启动趋势分析展示当前筛选维度和时间状态下的性能分解的时间,(仅限首次启动、冷启动)。

2、慢启动分析:可以在启动设置中自定义慢启动的划分、默认首次启动/冷启动超过三秒为慢启动,热启动超过一秒为慢启动。直观详细展示当前筛选维度和时间状态下的慢启动的次数、正常启动次数、以及平均慢启动耗时;展示慢启动分布的设备、系统、运营商、版本、渠道、地域这些详细信息。慢启动分析有助于开发者查找问题根源,尽早发现解决问题。

3、启动崩溃分析:能够归纳出启动阶段中出现的崩溃信息,支持筛选首次启动、冷启动、热启动状态下的崩溃率。按照设备已经启动的时间,默认耗时上限为 8 秒(可自行更改),如超出时间则不被划分至启动崩溃。精准监控移动端各个方面崩溃数据,有助于开发者做APP产品的数据统计。

四、优化的目标

启动过程分为四个部分:

1、 main()函数之前

2、main()函数之后至applicationWillFinishLaunching完成

3、App完成所有本地数据的加载并将相应的信息展示给用户

4、App完成所有联网数据的加载并将相应的信息展示给用户

1+2一起决定了我们需要用户等待多久才能出现一个主视图,同时也是技术上可以精确测量的时长。

1+2+3决定了用户视觉上的等待出现有用信息所需要的时长。1+2+3+4决定了我们需要多少时间才能让我们需要展示给用户的所有信息全部出现。

五、优化策略

1、移除不需要用到的动态库(利用 DYLD_PRINT_STATISTICS 变量来定位)

2、移除不需要用到的类(可以使用fui进行辅助移除)

3、合并功能类似的class和category

4、压缩资源图片(Xcode在编译App的时候,已经自动把需要打包到App里的资源图片压缩过一遍了。然而Xcode的压缩会相对比较保守)

5、优化applicationWillFinishLaunching(将不需要马上在此方法中执行的代码延后执行)

6、优化rootViewController加载(适当将某一级的childViewController或subviews延后加载)

7、异步操作不影响耗时,但影响交互体验(视觉上的优化有时比技术手段效果更好)

六、总结

友盟+u-apm这一监控工具可以起到地毯式的android 启动耗时分析,帮助开发者监控平台,及时发现问题漏洞及时修改,通过轻量级的集成接入即可拥有实时、可靠、全面的应用崩溃、ANR、自定义异常等捕获能力, 及卡顿、启动分析、内存分析、网络分析等性能监测能力,帮助开发者高效还原异常、卡顿用户的访问路径和业务现场,缩短故障排查时间。提供云真机测试能力,期间自动采集崩溃信息,提供详尽的崩溃报告协助我们进行问题筛查,通过以上一系列功能,实现监控测试全流程深度打通。

举报/反馈

IT科技观

505获赞 3.3万粉丝
科技业界,新产品行业资讯。
游戏领域创作者
关注
0
0
收藏
分享