速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

Dexposed:Android 平台免 Root 无侵入 AOP 框架

  • 2015-07-20
  • 本文字数:1999 字

    阅读完需:约 7 分钟

近日,阿里巴巴无线事业部推出首个重量级 Android 开源项目,名为 Dexposed ,是一个 Android 平台下的无侵入运行期 AOP 框架。旨在解决像性能监控、在线热补丁等移动开发常见难题,典型使用场景为:

  • AOP 编程
  • 插桩 (如测试、性能监控等)
  • 在线热补丁
  • SDK hooking 以提供更好的开发体验

它基于 ROOT 社区著名开源项目 Xposed 改造剥离了 ROOT 部分,演化为服务于所在应用自身的 AOP 框架,并在 Apache 2.0 协议下开源。

Xposed 是 XDA 社区用户 rovo89 开发并管理的一个项目,它通过修改 Android Dalvik 运行时的 Zygote 进程,使用 Xposed Bridge 将第三方代码注入到 Android 应用的方法调用中,实现非侵入式的在运行期动态修改系统和应用行为的能力。从推出到现在,它受到广大开发者和用户的欢迎,出现了数千个模块和适配不同 Android ROM 的安装器。

Dexposed 受到 Xposed 的启发,但它关注于应用本身,仅仅提供改变应用自身运行时行为的能力,不提供注解处理器、织入(weaver)和改变字节码的能力。它的使用也很简单,只需在应用初始化阶段引入一个 JNI 库即可。另外,Dexposed 还支持 ART 运行时,不过还在早期阶段。

InfoQ 记者联系到该框架的作者并进行了采访,以下是我们了解到的更多信息。

Dexposed 作者介绍:

胡文江,淘宝花名白衣( @Rock 白衣),10 年加入手机淘宝,目前在阿里巴巴无线事业部 Android 架构组,主要负责 Android 客户端基础架构及性能优化工作。有 8 年的智能手机软件开发经验 (从早期的 Symbian,WindowsMobile 到今天的 AndroidIOS),包括将近 3 年多的移动多媒体软件开发经验,将近 4 年多的大型移动互联网软件开发架构经验。

InfoQ:请介绍一下 Dexposed 项目,它的原理是什么样的,在淘宝内部是如何用的?

白衣:手机淘宝在 12 年下半年起就在寻找客户端动态改变的能力,投入了很多人力,做了很多各种各样有益的尝试。Dexposed 项目就是在这种大背景下产生的。

Dexposed 项目是手机淘宝独立研发,业界首创的无侵入式 Android 客户端热补丁方案的核心底层支撑技术。

它主要功能特性或者说它最强大的地方,就是在 Android 手机上能对一个客户端 App 内的任何 Java 方法进行『热』动态 AOP 替换,Java 方法的 AOP 替换是立即生效的。

Dexposed 中的 AOP 原理来自于 Xposed。在 Dalvik 虚拟机下,主要是通过改变一个方法对象方法在 Dalvik 虚拟机中的定义来实现,具体做法就是将该方法的类型改变为 native 并且将这个方法的实现链接到一个通用的 Native Dispatch 方法上。这个 Dispatch 方法通过 JNI 回调到 Java 端的一个统一处理方法,最后在统一处理方法中调用 before, after 函数来实现 AOP。在 Art 虚拟机上目前也是是通过改变一个 ArtMethod 的入口函数来实现。

它的典型应用场景可以用于解决线上严重问题时的紧急发版问题或者试验细微的体验优化,目前手机淘宝在这些场景下都有使用,也在拓展更多的使用场景。感兴趣的可以看下 github 主页上的 sample 例程。

InfoQ:当初是为何决定将这个项目开源出来,能介绍下你们部门对于开源的态度吗?

白衣:Dexposed 项目最开始就是受 Android 开源项目 Xposed 的启发,做了创新性的改造,使之适用于单个 Application 的情况,从而使客户端 App 具备实时动态改变方法的能力,高效解决了客户端 App 发布后碰到严重线上问题时的紧急发版问题,让 App 开发没有后顾之忧。饮水思源,所以希望将该技术开源出去,回馈开源社区,取 Dexposed 的项目名,既有向原始开源项目致敬之意,也有将 Android 的 dex 方法暴露出来之意。至于开源的态度,我们认为开源是大的趋势,在某些方面开源软件已经主导创新,开源无处不在。我们相信,开源会走得越来越快,而且今天任何一家公司,你不可能绕过开源技术而闭门造车。所以我们决定开源,并得到了公司的肯定和大力支持,所以说这件事也体现了阿里积极拥抱开源社区的态度。

InfoQ:我看到这个项目在去年 ArchSummit 上已经预告要开源,但直到现在才开源出来,这期间有什么故事吗?

白衣:这里面主要有两点,第一是想将 Dexposed 更加完善一些(支持 Art-Android 新的 java runtime)再开源,但是在研究 Art 上遇到了很多困难,这里耽搁了比较久的时间,到目前为止对 Art 的支持也只是初步的 beta 阶段,所以希望大家能一起努力交流,攻克这个难关。第二是阿里对外开源的项目也比较多,对内部技术的对外纰漏、方案开源的审查和把关上也需要一些时间。

InfoQ:这个开源项目的阶段性目标是什么?

白衣:现阶段的目标就是实现对 Art 的支持。不过后续还有很多有意思的 feature 在计划中。大家可以看我们的 Roadmap ,也欢迎大家提供更多想法。

国外在移动开发开源方面非常踊跃,一些大公司如 Facebook、GitHub、Square 等都贡献了很多项目,但在国内还很少有公司有这个意识,甚至有些公司不遵守开源协议。希望阿里的行为能够带动更多的公司从公司层面进行移动开发开源方面的活动,让移动开发领域能够出现更多国人项目的身影。

2015-07-20 07:5510451
用户头像

发布了 164 篇内容, 共 108.0 次阅读, 收获喜欢 392 次。

关注

评论

发布
暂无评论
发现更多内容

走进浪潮信息,深入探讨社区发展规划交流会圆满结束 | 理事长走进系列

OpenAnolis小助手

开源 操作系统 国产操作系统 龙蜥社区

解决过期苹果App应用的方法

免费!API对接淘宝店铺啦!—操作超简易!

技术冰糖葫芦

API 接口

悦数图数据库推出 AI 知识图谱构建器及图语言生成助手

悦数图数据库

龙蜥社区第 22 次运营委员会圆满结束!

OpenAnolis小助手

开源 操作系统 国产操作系统 龙蜥社区

龙智亮相2024国际集成电路展览会暨研讨会(IIC Shanghai),分享芯片研发及管理解决方案与技术实践

龙智—DevSecOps解决方案

芯片研发

龙蜥社区第四届理事大会圆满召开!中兴、英特尔、浪潮成为副理事长单位!龙蜥高级顾问团成立!

OpenAnolis小助手

开源 操作系统 国产操作系统 龙蜥社区

【教程】苹果上架常见要求的有哪些?

雪奈椰子

谈谈我对 AIGC 趋势下软件工程重塑的理解

阿里巴巴云原生

阿里云 云原生 AIGC

产学研用全覆盖!信通院、中兴通讯、复旦大学等 12 家厂商共同成立龙蜥社区系统运维联盟(SOMA)

OpenAnolis小助手

操作系统 国产操作系统 龙蜥社区

低代码开发与物联网应用:重塑未来技术生态

快乐非自愿限量之名

技术 低代码 物联网

【教程】 iOS混淆加固原理篇

雪奈椰子

【教程】一个比较良心的C++代码混淆器

雪奈椰子

龙年新目标!龙蜥安全联盟第三次月会圆满结束

OpenAnolis小助手

开源 操作系统 国产操作系统 龙蜥社区

龙蜥系统运维联盟第二次会议圆满召开,深度探讨联盟发展方向

OpenAnolis小助手

开源 操作系统 国产操作系统 龙蜥社区

Databend x CubeFS:面向未来的企业级云原生数据存储与分析

Databend

59 人参会,探讨新年发展!龙蜥社区技术委员会、运营委员会会议圆满结束

OpenAnolis小助手

开源 操作系统 国产操作系统 龙蜥社区

龙蜥社区荣获 2023 年度龙芯“十佳基础软件合作伙伴”奖

OpenAnolis小助手

开源 操作系统 国产操作系统 龙蜥社区

🚀2023最新版克魔助手抓包教程(9) - 克魔助手 IOS 数据抓包

雪奈椰子

提升质量透明度,动力电池企业的数据驱动生产实践 | 数据要素 × 工业制造

奇点云

奇点云 数据要素 工业制造

ai制图软件有哪些?这5款自动生成绘画工具值得推荐!

彭宏豪95

人工智能 在线白板 办公软件 AIGC AI绘画

龙蜥操作系统荣登开放原子开源基金会“2023 生态开源项目”奖项榜单

OpenAnolis小助手

开源 操作系统 国产操作系统 龙蜥社区

走进龙芯中科交流会圆满结束!深入探讨未来合作规划 | 理事长走进系列

OpenAnolis小助手

操作系统 国产操作系统 龙蜥社区

苹果证书过期有什么影响

雪奈椰子

深入了解如何对IPA包进行有效的混淆处理

雪奈椰子

Kubernetes与低代码开发应用:实现高效协同开发的新模式

不在线第一只蜗牛

Kubernetes 容器 低代码

金融科技领袖汇聚:图技术+大模型驱动金融创新

悦数图数据库

图数据库

详解CloudBees CI,助力Jenkins用户顺利迁移并构建高效CI/CD平台

龙智—DevSecOps解决方案

ci 持续集成 CD

玄湾OS 重磅开源!专为容器安全运行的轻量级云原生操作系统

OpenCloudOS

Linux

视频教程:如何集成Perforce Helix Core与S3 存储,助力无限扩展储存空间

龙智—DevSecOps解决方案

版本控制 S3 版本控制软件 储存库

走进 Intel,深度探讨合作发展规划交流会圆满结束 | 理事长走进系列

OpenAnolis小助手

开源 操作系统 国产操作系统 龙蜥社区

Dexposed:Android平台免Root无侵入AOP框架_移动_徐川_InfoQ精选文章