手机卫士性能优化方案 - Huodongjia.com...2017/08/23 · 代码检测工具...
Transcript of 手机卫士性能优化方案 - Huodongjia.com...2017/08/23 · 代码检测工具...
![Page 1: 手机卫士性能优化方案 - Huodongjia.com...2017/08/23 · 代码检测工具 LINT扫描神器 代码文件 lint.xml LINT TOOL Correctness Usability Security Accessibility Performance](https://reader036.fdocument.pub/reader036/viewer/2022062403/5fe37d78d4ed060ea8325b23/html5/thumbnails/1.jpg)
手机卫士性能优化方案2017年8月
![Page 2: 手机卫士性能优化方案 - Huodongjia.com...2017/08/23 · 代码检测工具 LINT扫描神器 代码文件 lint.xml LINT TOOL Correctness Usability Security Accessibility Performance](https://reader036.fdocument.pub/reader036/viewer/2022062403/5fe37d78d4ed060ea8325b23/html5/thumbnails/2.jpg)
内容列表
预防性能问题
性能监控
问题诊断
修复技术
代码检测工具
自动化分析
资源优化工具
APK构建检测
![Page 3: 手机卫士性能优化方案 - Huodongjia.com...2017/08/23 · 代码检测工具 LINT扫描神器 代码文件 lint.xml LINT TOOL Correctness Usability Security Accessibility Performance](https://reader036.fdocument.pub/reader036/viewer/2022062403/5fe37d78d4ed060ea8325b23/html5/thumbnails/3.jpg)
代码检测工具
LINT扫描神器
代码文件
lint.xml
LINTTOOL
Correctness Usability
Security Accessibility
Performance …
![Page 4: 手机卫士性能优化方案 - Huodongjia.com...2017/08/23 · 代码检测工具 LINT扫描神器 代码文件 lint.xml LINT TOOL Correctness Usability Security Accessibility Performance](https://reader036.fdocument.pub/reader036/viewer/2022062403/5fe37d78d4ed060ea8325b23/html5/thumbnails/4.jpg)
代码检测工具
FINDBUGS——深度定制
可配置过滤器
插件化框架
原生findbugs认为有问题
![Page 5: 手机卫士性能优化方案 - Huodongjia.com...2017/08/23 · 代码检测工具 LINT扫描神器 代码文件 lint.xml LINT TOOL Correctness Usability Security Accessibility Performance](https://reader036.fdocument.pub/reader036/viewer/2022062403/5fe37d78d4ed060ea8325b23/html5/thumbnails/5.jpg)
代码检测工具
代码火线—不可穿越的火线
UI线程的耗时操作频繁查找资源
频繁创建对象
过度刷新
Adapter复用布局扁平
直接使用大图片
UI
Dex加载
解压
数据延迟加载
后台任务调度Perf
Webview
![Page 6: 手机卫士性能优化方案 - Huodongjia.com...2017/08/23 · 代码检测工具 LINT扫描神器 代码文件 lint.xml LINT TOOL Correctness Usability Security Accessibility Performance](https://reader036.fdocument.pub/reader036/viewer/2022062403/5fe37d78d4ed060ea8325b23/html5/thumbnails/6.jpg)
Jekins任务平台
业务服务器
数据源
JekinsPC节点
代码仓库 崩溃后台
控制器
crashfindbugsmail
模块数据
modulewarning
Modulescrashfindbugsmail
modulewarning
report network
DB
file
controler▪doGet▪doPost▪doXXX
自动化分析
系统和平台
![Page 7: 手机卫士性能优化方案 - Huodongjia.com...2017/08/23 · 代码检测工具 LINT扫描神器 代码文件 lint.xml LINT TOOL Correctness Usability Security Accessibility Performance](https://reader036.fdocument.pub/reader036/viewer/2022062403/5fe37d78d4ed060ea8325b23/html5/thumbnails/7.jpg)
自动化分析
举例 输出
![Page 8: 手机卫士性能优化方案 - Huodongjia.com...2017/08/23 · 代码检测工具 LINT扫描神器 代码文件 lint.xml LINT TOOL Correctness Usability Security Accessibility Performance](https://reader036.fdocument.pub/reader036/viewer/2022062403/5fe37d78d4ed060ea8325b23/html5/thumbnails/8.jpg)
APK构建
重复资源 图片压缩 核心法宝:制度资源混淆
![Page 9: 手机卫士性能优化方案 - Huodongjia.com...2017/08/23 · 代码检测工具 LINT扫描神器 代码文件 lint.xml LINT TOOL Correctness Usability Security Accessibility Performance](https://reader036.fdocument.pub/reader036/viewer/2022062403/5fe37d78d4ed060ea8325b23/html5/thumbnails/9.jpg)
下一个
预防性能问题
性能监控
问题诊断
修复技术
埋点收集信息
常规性能监控
观察者工具
性能分析工具
![Page 10: 手机卫士性能优化方案 - Huodongjia.com...2017/08/23 · 代码检测工具 LINT扫描神器 代码文件 lint.xml LINT TOOL Correctness Usability Security Accessibility Performance](https://reader036.fdocument.pub/reader036/viewer/2022062403/5fe37d78d4ed060ea8325b23/html5/thumbnails/10.jpg)
Aspectj重写器
介绍及应用
基于java的面向切面的编程语言
静态植入:编译时期织入,在编译出来的class字节码文件中完成织入
电量
网络交互
![Page 11: 手机卫士性能优化方案 - Huodongjia.com...2017/08/23 · 代码检测工具 LINT扫描神器 代码文件 lint.xml LINT TOOL Correctness Usability Security Accessibility Performance](https://reader036.fdocument.pub/reader036/viewer/2022062403/5fe37d78d4ed060ea8325b23/html5/thumbnails/11.jpg)
常规性能监控
预防性能问题
性能监控
问题诊断
修复技术
埋点收集信息
常规性能监控
观察者工具
性能分析工具
进程冷热启动
四大组件启动速度
各个线程卡慢检测
异步处理性能检测
![Page 12: 手机卫士性能优化方案 - Huodongjia.com...2017/08/23 · 代码检测工具 LINT扫描神器 代码文件 lint.xml LINT TOOL Correctness Usability Security Accessibility Performance](https://reader036.fdocument.pub/reader036/viewer/2022062403/5fe37d78d4ed060ea8325b23/html5/thumbnails/12.jpg)
进程的冷热启动
进程冷热启动
Context::startXXXXContext::bindXXXXApplication::attachApplication::onCreateActivity:onCreate
CustomInstrumentation::callApplicationOnCreate
service: exported?activity: exported? UI?Provider: exported? Receiver: exported?
![Page 13: 手机卫士性能优化方案 - Huodongjia.com...2017/08/23 · 代码检测工具 LINT扫描神器 代码文件 lint.xml LINT TOOL Correctness Usability Security Accessibility Performance](https://reader036.fdocument.pub/reader036/viewer/2022062403/5fe37d78d4ed060ea8325b23/html5/thumbnails/13.jpg)
四大组件启动
举例—Activity的加载时间
关键字:ActivityThreadInstrumentation
CustomInstrumentation
public void callActivityOnCreate(Activity activity, Bundle icicle) {//...//收集我们需要的activity信息。
long bTim = System.currentTimeMillis();rTRunnable.setBeginTime(bTim , activity.getComponentName().getClassName());super.callActivityOnCreate(activity, icicle);//activity绘制完成后,执行回调函数,用来记录时间activity.getWindow().getDecorView().post(rTRunnable);//...
}
![Page 14: 手机卫士性能优化方案 - Huodongjia.com...2017/08/23 · 代码检测工具 LINT扫描神器 代码文件 lint.xml LINT TOOL Correctness Usability Security Accessibility Performance](https://reader036.fdocument.pub/reader036/viewer/2022062403/5fe37d78d4ed060ea8325b23/html5/thumbnails/14.jpg)
线程卡慢监控
采样时间发送检测信息
Handle::postHandle::dispatchMessage
CustomInstrumentation::waitForIdleCustomInstrumentation::waitForIdleSync
Public void CustomInstrumentaion::waitForIdle(){//…mMessageQueue.addIdleHandler(new Idler(recipient));mThread.getHandler().post(new EmptyRunnable(t));//…}
![Page 15: 手机卫士性能优化方案 - Huodongjia.com...2017/08/23 · 代码检测工具 LINT扫描神器 代码文件 lint.xml LINT TOOL Correctness Usability Security Accessibility Performance](https://reader036.fdocument.pub/reader036/viewer/2022062403/5fe37d78d4ed060ea8325b23/html5/thumbnails/15.jpg)
异步处理的性能监控
异步处理静态埋点
拦截对象:Handle::post(Runnable r)Handle::postAtTime(Runnable r, long uptimeMillis)Handle::postAtTime(Runnable r, Object token, long uptimeMillis);Handle::postDelayed(Runnable r, long delayMillis)Handle::postAtFrontOfQueue(Runnable r)
![Page 16: 手机卫士性能优化方案 - Huodongjia.com...2017/08/23 · 代码检测工具 LINT扫描神器 代码文件 lint.xml LINT TOOL Correctness Usability Security Accessibility Performance](https://reader036.fdocument.pub/reader036/viewer/2022062403/5fe37d78d4ed060ea8325b23/html5/thumbnails/16.jpg)
常规性能监控
预防性能问题
性能监控
问题诊断
修复技术
埋点收集信息
常规性能监控
观察者工具
性能分析工具
进程冷热启动
四大组件启动速度
各个线程卡慢检测
异步处理性能检测
Java反射
四大组件的onCreate执行时间
ClassLoader.getResourceAsStream
第三方SDK
卡慢
![Page 17: 手机卫士性能优化方案 - Huodongjia.com...2017/08/23 · 代码检测工具 LINT扫描神器 代码文件 lint.xml LINT TOOL Correctness Usability Security Accessibility Performance](https://reader036.fdocument.pub/reader036/viewer/2022062403/5fe37d78d4ed060ea8325b23/html5/thumbnails/17.jpg)
工具
预防性能问题
性能监控
问题诊断
修复技术
埋点收集信息
常规性能监控
观察者工具
性能分析工具
LeakCanary
分析工具(例:内存)
APM集成工具——Argus APM
![Page 18: 手机卫士性能优化方案 - Huodongjia.com...2017/08/23 · 代码检测工具 LINT扫描神器 代码文件 lint.xml LINT TOOL Correctness Usability Security Accessibility Performance](https://reader036.fdocument.pub/reader036/viewer/2022062403/5fe37d78d4ed060ea8325b23/html5/thumbnails/18.jpg)
观察者App
LeakCanary
检查Activity是否泄漏的问题,通过onDestroy方法检查,存在泄漏,则会dump内存镜像,获取栈信息
![Page 19: 手机卫士性能优化方案 - Huodongjia.com...2017/08/23 · 代码检测工具 LINT扫描神器 代码文件 lint.xml LINT TOOL Correctness Usability Security Accessibility Performance](https://reader036.fdocument.pub/reader036/viewer/2022062403/5fe37d78d4ed060ea8325b23/html5/thumbnails/19.jpg)
内存分析
分析方法
。 Dalvik Heap Data HPROF
adb shell kill -10
Debug.dumpHprofData
DDMS dump hprof file
hprof-conv
![Page 20: 手机卫士性能优化方案 - Huodongjia.com...2017/08/23 · 代码检测工具 LINT扫描神器 代码文件 lint.xml LINT TOOL Correctness Usability Security Accessibility Performance](https://reader036.fdocument.pub/reader036/viewer/2022062403/5fe37d78d4ed060ea8325b23/html5/thumbnails/20.jpg)
内存分析
分析方法
。 meminfo maps smaps mem
![Page 21: 手机卫士性能优化方案 - Huodongjia.com...2017/08/23 · 代码检测工具 LINT扫描神器 代码文件 lint.xml LINT TOOL Correctness Usability Security Accessibility Performance](https://reader036.fdocument.pub/reader036/viewer/2022062403/5fe37d78d4ed060ea8325b23/html5/thumbnails/21.jpg)
内存分析
分析方法
。
![Page 22: 手机卫士性能优化方案 - Huodongjia.com...2017/08/23 · 代码检测工具 LINT扫描神器 代码文件 lint.xml LINT TOOL Correctness Usability Security Accessibility Performance](https://reader036.fdocument.pub/reader036/viewer/2022062403/5fe37d78d4ed060ea8325b23/html5/thumbnails/22.jpg)
输出工具
内存分析
![Page 23: 手机卫士性能优化方案 - Huodongjia.com...2017/08/23 · 代码检测工具 LINT扫描神器 代码文件 lint.xml LINT TOOL Correctness Usability Security Accessibility Performance](https://reader036.fdocument.pub/reader036/viewer/2022062403/5fe37d78d4ed060ea8325b23/html5/thumbnails/23.jpg)
Argus APM
非侵入式
支持插件性能监控
云端灵活配置
实时收集实时分析
友好的数据平台
支持针对开发人员的DEBUG模式
![Page 24: 手机卫士性能优化方案 - Huodongjia.com...2017/08/23 · 代码检测工具 LINT扫描神器 代码文件 lint.xml LINT TOOL Correctness Usability Security Accessibility Performance](https://reader036.fdocument.pub/reader036/viewer/2022062403/5fe37d78d4ed060ea8325b23/html5/thumbnails/24.jpg)
Argus APM
交互体验性能
应用启动
组件生命周期
帧率
网络性能上传下载流量
网络错误
内存性能进程内存信息
内存详情
传感器性能传感器信息
使用时长
CPU性能瞬时使用率
平均使用率
电池电量电量信息
耗电详情
IO性能文件
数据库
ANR问题ANR详情
ANR趋势检测
![Page 25: 手机卫士性能优化方案 - Huodongjia.com...2017/08/23 · 代码检测工具 LINT扫描神器 代码文件 lint.xml LINT TOOL Correctness Usability Security Accessibility Performance](https://reader036.fdocument.pub/reader036/viewer/2022062403/5fe37d78d4ed060ea8325b23/html5/thumbnails/25.jpg)
Argus APM
实时分析
多维度过滤
扩展能力
漂亮的报表
实时分析
控制
能力
![Page 26: 手机卫士性能优化方案 - Huodongjia.com...2017/08/23 · 代码检测工具 LINT扫描神器 代码文件 lint.xml LINT TOOL Correctness Usability Security Accessibility Performance](https://reader036.fdocument.pub/reader036/viewer/2022062403/5fe37d78d4ed060ea8325b23/html5/thumbnails/26.jpg)
Argus APM
DEBUG模式
实时性能数据采集
实时本地分析
警告信息
日志记录性能问题可追溯
制度:接入QA Bug库
多进程支持
![Page 27: 手机卫士性能优化方案 - Huodongjia.com...2017/08/23 · 代码检测工具 LINT扫描神器 代码文件 lint.xml LINT TOOL Correctness Usability Security Accessibility Performance](https://reader036.fdocument.pub/reader036/viewer/2022062403/5fe37d78d4ed060ea8325b23/html5/thumbnails/27.jpg)
内容列表
预防性能问题
性能监控
问题诊断
修复技术
诊断工具
数据分析控制平台
![Page 28: 手机卫士性能优化方案 - Huodongjia.com...2017/08/23 · 代码检测工具 LINT扫描神器 代码文件 lint.xml LINT TOOL Correctness Usability Security Accessibility Performance](https://reader036.fdocument.pub/reader036/viewer/2022062403/5fe37d78d4ed060ea8325b23/html5/thumbnails/28.jpg)
用户反馈
手机诊断检测用户设备性能
基本信息
双卡信息
ROOT信息网络信息
自动分析耗电
分析屏幕密度
生成内存镜像文件
Method Tracing
CPU/内存监控…...
![Page 29: 手机卫士性能优化方案 - Huodongjia.com...2017/08/23 · 代码检测工具 LINT扫描神器 代码文件 lint.xml LINT TOOL Correctness Usability Security Accessibility Performance](https://reader036.fdocument.pub/reader036/viewer/2022062403/5fe37d78d4ed060ea8325b23/html5/thumbnails/29.jpg)
用户反馈
手机诊断检测用户设备性能
![Page 30: 手机卫士性能优化方案 - Huodongjia.com...2017/08/23 · 代码检测工具 LINT扫描神器 代码文件 lint.xml LINT TOOL Correctness Usability Security Accessibility Performance](https://reader036.fdocument.pub/reader036/viewer/2022062403/5fe37d78d4ed060ea8325b23/html5/thumbnails/30.jpg)
内容列表
预防性能问题
性能监控
问题诊断
修复技术
热修复技术
插件化技术
![Page 31: 手机卫士性能优化方案 - Huodongjia.com...2017/08/23 · 代码检测工具 LINT扫描神器 代码文件 lint.xml LINT TOOL Correctness Usability Security Accessibility Performance](https://reader036.fdocument.pub/reader036/viewer/2022062403/5fe37d78d4ed060ea8325b23/html5/thumbnails/31.jpg)
RePlugin
选择插件
极其灵活
易于集成
非常稳定
特性丰富
仓库地址:https://github.com/Qihoo360/RePlugin
![Page 32: 手机卫士性能优化方案 - Huodongjia.com...2017/08/23 · 代码检测工具 LINT扫描神器 代码文件 lint.xml LINT TOOL Correctness Usability Security Accessibility Performance](https://reader036.fdocument.pub/reader036/viewer/2022062403/5fe37d78d4ed060ea8325b23/html5/thumbnails/32.jpg)
总结
手机卫士性能优化方案
预防性能问题
性能监控
问题诊断
修复技术热修复技术
插件化技术—RePlugin
代码检测工具
自动化分析系统
资源优化工具
APK构建检测
埋点收集信息
常规性能监控
观察者工具
性能分析工具
诊断工具
数据分析控制平台
代码火线系统
重复资源 图片压缩
核心法宝:制度资源混淆
进程冷热启动 四大组件启动速度
各个线程卡慢检测 异步处理性能检测
LeakCanary 分析工具
APM集成工具——Argus APM
![Page 33: 手机卫士性能优化方案 - Huodongjia.com...2017/08/23 · 代码检测工具 LINT扫描神器 代码文件 lint.xml LINT TOOL Correctness Usability Security Accessibility Performance](https://reader036.fdocument.pub/reader036/viewer/2022062403/5fe37d78d4ed060ea8325b23/html5/thumbnails/33.jpg)
THANK YOU北京奇虎科技有限公司