AirJD 焦点
AirJD

没有录音文件
00:00/00:00
加收藏

手机淘宝Dexposed技术介绍 by 胡文江

发布者 mobile
发布于 1460595693374  浏览 5089 关键词 移动开发 
分享到

第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 谢谢!



支持文件格式:*.pdf
上传最后阶段需要进行在线转换,可能需要1~2分钟,请耐心等待。