关于app:移动APP启动慢解决实践

3次阅读

共计 1626 个字符,预计需要花费 5 分钟才能阅读完成。

我的项目背景

本 APP 为面向用户的一款 LBS 产品。用户反馈 APP 应用过程中存在启动慢等问题。本文次要针对该原生 Android APP 启动慢的问题进行剖析及解决方案的介绍。

所遇到的挑战

用户反馈的启动慢问题偏主观应用评估,对于业余的技术人员来说,这些反馈评估不够量化,无奈为为咱们解决问题提供无效的数据撑持。当然用户的负面评估也裸露了咱们 APP 存在的两大问题。

1. 监控体系不欠缺

无论后端服务还是挪动端,咱们均没有引入全链路追踪框架,导致利用不足全面的监控笼罩。过后的状况,咱们仅埋点记录了大量零碎级监控指标,要害代码门路监控严重不足。

2. 代码品质较差

咱们的我的项目历经多代开发保护,随着业务复杂性的升高及人员流动的影响,代码品质参差不齐,代码腐化问题重大,有的子系统代码浏览性极差,代码格调不对立。

解决问题的步骤

咱们针对启动慢的问题进行剖析后,对两大挑战隔靴搔痒,次要的解决步骤如下。

1. 欠缺监控体系

咱们通过探讨总结后,面临两个抉择,一个是基于开源的 Skywalking 等 APM 零碎进行定制开发,存在的问题是现有工程师不相熟该零碎,短期内很难短时间补足相干常识等问题;二是采纳成熟的 APM 零碎,但这会带来较大的短期资金压力。鉴于咱们我的项目的紧迫性,咱们抉择了计划二,引入了友盟 + 利用性能监控平台 U -APM。

引入 U -APM 后,咱们能对利用端进行十分具体的监控,比方下图的概览监控。联合 U -APM 的启动剖析能力,咱们第一次较为准确地明确了用户启动的耗时及散布。

此外,咱们还为服务端引入了 ELK 套件(ElasticSearch,Logstash,Kibana)和结构化日志,将要害代码门路参数及耗时等信息进行高效输入并汇聚展现。

2. 增强代码品质管控

咱们以前的代码开发过于重视速度,疏忽了品质,尽管有 CR(Code Review),但多流于形式,品质把控不严。咱们借鉴业界工程效力最佳实际,对代码提交及评审打回率等要害指标进行监控并定期收回报表,对不合格的我的项目进行通报,并召开专题会议介绍代码品质晋升实际。

3. 入手解决

有了监控体系后,咱们就领有了亮堂的眼睛去察看咱们的零碎。咱们通过对量化后的耗时进行剖析,初步判断出瓶颈所在,优先解决主要矛盾。实践上,每个申请都有优化空间,那是不是每个都须要优化呢?答案当然是否定的,因为服务间接口数以千计,如果耗费太多精力在非关键接口上,很容易事倍功半。咱们采纳的 ROI(Return On Investment) 的思维,优先解决耗时占比拟大、申请频繁的函数调用以获得最大收益。具体来讲有如下几点。

1) 安卓利用端问题

首次启动 app 耗时长,针对 Application 和 Activity 的同步内容进行优化,将核心内容页面尽快渲染返回给用户,应用异步工作加载耗时和非核心页面内容。安卓具体的 api 及原理,详见官网形容 https://developer.android.goo…

2) 服务端问题

通过监控,咱们发现个别后端服务 GC(Garbage Collection)频繁,隔一段时间就会导致 Stop the World,引发耗时稳定。咱们通过对要害代码门路进行监控,联合内存应用状况等进行专项整治,发现问题次要是利用内的本地缓存使用不当导致,大量的长期缓存挤占内存引发了利用稳定。

我的项目总结

在利用 U -APM、丰盛监控及代码品质晋升后,该安卓 APP 的前期体现渐佳,用户的启动慢的吐槽量曾经大幅缩小。总的来说,安卓 APP 启动慢次要有两方面起因,一是 APP 本身在手机端的代码设计不够正当,常见的问题在官网平均最佳实际 https://developer.android.goo…;二是 APP 拜访的后盾服务质量存在优化空间。

针对安卓利用端的优化,Google 也有许多实际案例,比方

PLAY ALL

Android Performance Patterns

个人简介:

么广忠,开源技术爱好者,全栈研发工程师,参加过多个开源我的项目并主导过多款 APP 设计开发。

正文完
 0