第1页
手机淘宝Dexposed 技术介绍
阿里巴巴集团 无线事业部 胡文江/白衣 邮箱:baiyi.hwj@alibaba-inc.com 2015.10.16
第4页
关于我
2007:杭州虹软 移动多媒体
2010:阿里巴巴 手机淘宝
负责手机淘宝Android客户端
为阿里巴巴各条无线Android产品线提供基础技术和设施 支撑
第5页
Agenda
Dexposed 诞生前的故事 Dexposed 的原理介绍 Dexposed 在手淘内部的应用及一些 Case Dexposed 未来
第6页
->2013
2013->2014
2014->
第7页
缘起
端侧的动态性
H5 服务器开关 jar 替换 脚本
第8页
缘起
端侧的动态性方案比较
端侧的动态性 H5 服务端开关项 Jar 包替换
脚本
优缺点 灵活,复杂交互性能差 需要程序预埋代码 实时性稍差,有冗余,资源 无解 学习成本高,性能差
第9页
缘起
性能监控和优化
侵入性问题 可行性问题
AOP(Aspect-Oriented Programming) AspectJ Java 动态代理
第10页
缘起
AOP(Aspect-Oriented Programming)
AOP 方案比较 AspectJ
Java 动态代理
缺点
特殊的语法 静态编译 编译时间长, 必须使用 AspectJ 编译器 对系统类无能为力
只能针对 interface 类
第11页
Xposed 和 Substrate
运行时AOP(Aspect-Oriented Programming)
AOP ROOT OpenSource Java Method Ndk Method
Xposed ✔ ✔ ✔ ✔ ✖
Substrate ✔ ✔ ✖ ✔ ✔
第12页
Xposed 原理
劫持 zygote 劫持 java method
->Dexposed
第13页
Dexposed 原理
运行时 / 方法级 / 性能损耗少 / 学习成本低 / 本进程
第14页
Dexposed 开源地址
https://github.com/alibaba/dexposed
第15页
Dexposed 使用介绍
Before After Replace
第16页
Dexposed 使用例子
第17页
手淘内部使用 Dexposed
Hotpatch(方法AOP以及资源替换) 线上性能监控 AOP 编程(查 bug,开发行为监控)
第18页
手淘Hotpatch 端侧架构
patch
PatchManager Dexposedbridge
Dexposed
手淘
Dalvik runtime(art)
第19页
手淘Hotpatch 端侧修复流程
第20页
手淘 Hotpatch 后端支撑
多维度
App版本/ 系统版本/ 机型/ ROM/ 手机制造商/ 渠道/ 地区/ 分仓
第21页
Hotpatch的安全性
Https 多重强校验
第22页
手淘性能监控
Android 帧率 android.view.Choreographer.java
第23页
手淘性能监控
IO 监测
第24页
手淘性能监控
StrictMode
第25页
Dexposed 未来
Support Art runtime
NDK AOP
第26页
参考资料
https://github.com/rovo89/Xposed https://github.com/alibaba/dexposed
第27页
手淘技术团队 官方微信账号
Q/A 谢谢!