共计 3907 个字符,预计需要花费 10 分钟才能阅读完成。
简介:导致 App 性能低下的起因有很多,除去设施硬件和软件的内部因素,其中大部分是开发者谬误地应用线、零碎函数、编程范式、数据结构等导致的。即使是较有教训的程序员,也很难在开发时就能防止所有导致性能低下的“坑”,因而解决性能问题的要害是在于能不能尽早地发现和定位和捕捉这些谬误。
1. 我的项目遇到的解体 / 卡顿 /ANR/OOM/ 启动慢
1.1 我的项目背景
1.2 所遇到的挑战
1.3 解决问题的步骤
1.4 我的项目总结
2. 产品体验内容:集成 / 接入 / 应用
2.1 集成 / 接入 / 友盟 + 利用性能监控平台 U-APM
2.2 集成 / 接入 / 应用体验总结与分享
2.3 对产品提出的倡议 / 意见
1. 我的项目遇到的奔溃 / 卡顿 /ANR/OOM/ 启动慢
1.1 我的项目背景
我的项目背景次要是公司开发我的项目,老板提起需要,产品经理布局需要以及文档,开发人员依据需要来布局开发,我的项目开发人员(两个前端开发,三个 Java 开发,两个测试,一个产品,一个 ui);我的项目组织架构:
(小程序 /H5):uniapp 架构 +U-APM 监听统计 +canvas 绘制海报 B 端管理系统: Vue+Axios+Elementui+ueditor135 编辑器 +
我的项目名叫:值得买商城,次要是一个一体化的的 B2C 平台,蕴含外部商城管理系统(客服 / 经营能够在零碎公布流动以及商品,治理商品、订单、会员,并且解决用户的询问以及投诉),C 端小程序 APP 端(H5、APP 端间接给用户提供一个便捷简介,实惠多优惠多的一个线上购物平台,通过流动优惠以及地推形式分享产生裂变,通过友盟统计抓取不同用户的爱好,定时更新推流以及发放优惠),我的项目相似京东商城、天猫商城,能够在商城浏览商品、下订单,会员用户以及星级用户能够加入各种流动。
电商模式:
1.1:B2B:商家到商家。比方阿里巴巴,慧聪网、铭万网。
1.2:B2C:商家到用户。比方京东。
1.3:C2C:用户到用户。比方淘宝。
1.4:B2B2C:商家到商家到用户。比方天猫。
1.5:O2O:线上到线下。比方百度外卖、美团、饿了么。
1.2 所遇到的挑战 / 问题
1. 我的项目上线例如代码异样或者控制台异样监听不到不太好排查
2. 服务端队列接口其中一个挂掉我的项目间接奔溃
3. 相似登录按钮点击申请频繁点击申请屡次
4. 页面组件不对立导致需要更改多处中央变动
5. 切换环境或者我的项目距配置导致异样 axios 拦挡失败
1.3 解决问题的步骤
- 最后我的项目开发中引入的 fundebug 第三方插件监听代码异样,然而局部拦挡异样捕捉不到{H5 以及小程序应用的是 fundebug,APP 应用友盟的 U -APM 去接入捕捉异样}
首先查看第三方捕捉的异样区偏差问题, 通过开发者工具调试 debugger 排查异样呈现的地位,查看是代码逻辑问题还是其余异样,顺次去排查解决
1.4 我的项目总结
遇到问题,不要心急也不须要慌,既然问题呈现了,依照问题呈现的工夫、形式、状况进行排查,找到问题之后,去一步步尝试解决就好,首先要把思路屡分明,实战中总是会遇到怪怪的问题,用心去做就 OK 了,局部想零碎的表格、表单, 网站中的列表,标题栏等等模块我的项目中尽量去封装集成为组件库对立治理,缩小工作量以及代码冗余。
2. 产品体验内容:集成 / 接入 / 应用
这里来说一下友盟的 U -APM 集成接入以及应用形式,在这里首先先阐明一下我集体在开发中为什么会抉择友盟的这款产品 api 在我的项目中应用,在解决问题的步骤中我提到过,我的项目中 h5 跟小程序应用的一个第三方 fundebug 来抓取以及捕捉异样,APP 中开发应用 U -APM 捕捉抓取谬误异样并监听,{fundebug 捕捉异样以及监听方面没有 U -APM 全面,只能监听到一般异样,U-APM 能够监听到奔溃剖析,自定义谬误异样,启动剖析,卡顿剖析以受影响人数等等},惟一感觉美中不足的就是,U-APM 只反对安卓跟 IOS
2.1 产品体验内容:集成 / 接入 / 应用
2.1.1 首先进入网址登录注册利用获取下载 SDK
U-APM 网站地址 https://apm.umeng.com/apps/cr…
2.1.2 获取到本人的利用 key 以及根底 sdk
留神:
· 利用的安卓版和 iOS 版不能应用雷同的 AppKey,须要离开注册。
·【友盟 +】的利用名与理论利用名和包名无关,若注册利用时,提醒利用名称已存在,倡议命名为利用名 + 平台(iOS/Android)。
maven 主动集成(举荐)
通过在 Android Studio 工程 build.gradle 配置脚本中增加 maven 线上依赖,导入最新版本组件化统计 SDK。
maven 依赖配置
在工程 build.gradle 配置脚本中 buildscript 和 allprojects 段中增加【友盟 +】SDK 新 maven 仓库地址。
maven {url ‘https://dl.bintray.com/umsdk/…’}
buildscript {repositories { google() jcenter() maven { url ‘https://dl.bintray.com/umsdk/…’} } dependencies {classpath ‘com.android.tools.build:gradle:3.4.0’ // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files} } allprojects {repositories { google() jcenter() maven { url ‘https://dl.bintray.com/umsdk/…’} } }
在工程 App 对应 build.gradle 配置脚本 dependencies 段中增加统计 SDK 库和其它库依赖:
// 上面各 SDK 依据宿主 App 是否应用相干业务按需引入。
// OAID 目前为目前国内市场支流的 Android Q 设施标识,可依据须要抉择。
// 友盟统计 SDK implementation ‘com.umeng.umsdk:common:9.3.3’
// 版本号(必选) implementation ‘com.umeng.umsdk:asms:1.1.4’
// asms 包依赖(必选) implementation ‘com.umeng.umsdk:game:9.2.0+G’
// 游戏统计 SDK 依赖(可选) implementation ‘com.umeng.umsdk:apm:1.1.0’
// U-APM 产品包依赖(必选)
解体/ANR 类型
如果您应用的是 9.0.4 以上版本 SDK,同时集成应用了 umeng-apm-vx.x.x.aar 插件,则默认开启新版本的稳定性性能
-keep class com.uc.* {;}
如果开发者本人捕捉了谬误,须要手动上传到【友盟 +】服务器能够调用上面两种办法:
@param {e}谬误异样
@param{type}自定义谬误类型
public static void UMCrash.generateCustomLog(Throwable e, String type)
办法一示例:
try {// 抛出异样的代码}
catch (Exception e) {
UMCrash.generateCustomLog(e, “UmengException”); }
办法二:
@param {e}谬误异样
@param{type}自定义谬误类型
public static void UMCrash.generateCustomLog(String e, String type)
捕捉胜利查看友盟 +U-APM 可视化工具:
具体文档查看官放文档比拟清晰明了:
https://developer.umeng.com/d…
2.2 集成 / 接入 / 应用体验总结与分享
首先来说一下市面上目前:导致 App 性能低下的起因有很多,除去设施硬件和软件的内部因素,其中大部分是开发者谬误地应用线、零碎函数、编程范式、数据结构等导致的。即使是较有教训的程序员,也很难在开发时就能防止所有导致性能低下的“坑”,因而解决性能问题的要害是在于能不能尽早地发现和定位和捕捉这些谬误。随着 App 业务的一劳永逸,各个系统也越来越简单,服务间的调用,服务的依赖,以及剖析服务的性能问题也越辣手,因而引入性能监控平台尤为重要。能不能疾速、精确、丰盛的定位谬误类型,是掂量性能监控产品的头要因素。以友盟 + 的 U -APM 利用性能监控平台为例,无论是 Java、Native 解体,还是 ANR、零碎各种强杀等问题;异样问题 U -APM 都能够捕捉到,并会生成内容残缺、丰盛、全面的日志。作为 App 开发者,置信大家肯定遇到过相似的难堪问题:故障永远都是你的客户通知你的,而在什么时候产生的,你也无奈确定,只能通过客户的反馈倒推工夫节点,靠后从谬误日志中失去绝对残缺的日志信息,友盟 + 利用性能监控平台 U -APM 为例触达渠道就有邮件、钉钉、企业微信、飞书等等。其中后三者能够通过 webhook 的形式间接将监控告警发送到群组里,让组内的研发同学头先工夫获取到无效信息,及时更改异样修复。集体感觉还是蛮好的在集体开发中还是企业应用开发中目前都够用了。
2.3 对产品提出的倡议 / 意见
作为开发者对 U -APM 的倡议:
1. 登录一个账号就能够有一个抉择平台来切换 ios/ 安卓来间接看到对应数据的统计,当初须要来回折腾有点麻烦
2. 目前监测统计谬误异样只反对 IOS 跟安卓 APP,小程序,H5 以及公众号这些目前不反对
3. 如果从监测的异样有录屏性能就更好了,这样会间接查看录屏回放成果杠杠的。
原文链接
本文为阿里云原创内容,未经容许不得转载。