手淘Native治理
如果无法正常显示,请先停止浏览器的去广告插件。
1. 手淘Native治理
潘文超(开风) 阿里巴巴 测试开发专家
www.top100summit.com
主办方:
2. 个人简介
2014.03~至今
2012.11~2014.03
3. 案例介绍
APP
Java层
java crash
JNI
Native层
本次带来手淘Native治理经验分享。
native crash
4. 手淘Android的crash现状——找方向
java
crash
native
crash
native crash是java crash的6倍
native crash是瓶颈,需要突破
5. native crash治理挑战——难
突破native crash,当前挑战有哪些?
• 聚合不不准
• crash堆栈不不全
native crash挑战
• 符号化信息缺失
• 线下提前规避⼿手段缺失
6. native crash治理核心问题是什么?——找抓手
sig6、sig11是主要的崩溃类型
signal 6
signal 11
结论:大部分crash原因是因为内存
7. 如何治理Native内存——调研业界
维度\产品 malloc debug AddressSanitizer memhook(UC)
是否需要root 需要 需要 需要
功能支撑广度 野指针、内存泄漏漏、内存崩溃等 野指针、堆栈缓冲区溢出、
全局缓冲区溢出、内存泄漏漏等 检测内存泄漏漏
堆栈能力 有 有 有
性能 差 好 不不详
使用成本 ⾼高 ⾼高 ⼀一般
开发了Native Finder,希望能彻底治理好手淘Native问题
8. 治理技术方案
9. Native治理过程
治理大量问题
1
5
治理初见成效
Native
发现根因
发现根本问题
Native标准化
制定标准
Monkey驱动
2
Monkey线下驱动
4
3
线上灰度
用户真实场景crash复现
10. Native治理过程
治理大量问题
1
5
治理初见成效
Native
发现根因
发现根本问题
Native标准化
制定标准
Monkey驱动
2
Monkey线下驱动
4
3
线上灰度
用户真实场景crash复现
11. Native工程标准化
库迁移
重复so治理
静态卡口
符号化so
12. Native治理过程
治理大量问题
1
5
治理初见成效
Native
发现根因
发现根本问题
Native标准化
制定标准
Monkey驱动
2
Monkey线下驱动
4
3
线上灰度
用户真实场景crash复现
13. Native治理——Monkey驱动
URL来源
独立URL
crash URL堆
核心流程URL
monkey
检测插件
产出
报告
堆栈信息
检测日志
算法规则
so维度日志
native报告
14. Native治理过程
治理大量问题
1
5
治理初见成效
Native
发现根因
发现根本问题
Native标准化
制定标准
Monkey驱动
2
Monkey线下驱动
4
3
线上灰度
用户真实场景crash复现
15. Native治理——线上灰度
APP
SDK Lite版
APP
外灰
用户
产出
报告
crash
上报
数据可视化报告
内存结构信息
16. Native治理过程
治理大量问题
1
5
治理初见成效
Native
发现根因
发现根本问题
Native标准化
制定标准
Monkey驱动
2
Monkey线下驱动
4
3
线上灰度
用户真实场景crash复现
17. Native治理——发现根因
crash
分析
累加泄漏
18. Native Finder沉淀——检测项
・内存检测项
共沉淀8项内存检查
・fd文件句柄检测项
共沉淀6项fd检查
19. Native治理——本地模式
APP
SDK
APP
本地操作复现
崩溃信号
产出
报告
监听
crash上报
数据可视化报告
内存结构化信息
20. Native治理过程
治理大量问题
1
5
治理初见成效
Native
发现根因
发现根本问题
Native标准化
制定标准
Monkey驱动
2
Monkey线下驱动
4
3
线上灰度
用户真实场景crash复现
21. Native治理结果
18+问题
crash率
初⻅见成效
22. 案例总结
根因分析
动静结合
线上线下联动
23. 展望&下一步规划
H5管控
常态化卡⼝口
堆栈能⼒力力
Native
Finder
平台化
24. Q&A