2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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:5510936
用户头像

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

关注

评论

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

得物自研客服IM中收发聊天消息背后的技术逻辑和思考实现

JackJiang

网络编程 即时通讯 IM

同城售后系统退款业务重构心得 | 京东云技术团队

京东科技开发者

架构 架构设计 企业号11月PK榜 系统重构

Generative AI 新世界 | 文生图(Text-to-Image)领域论文解读

亚马逊云科技 (Amazon Web Services)

机器学习 生成式人工智能 大语言模型

Parallels Desktop 19虚拟机怎么安装Win系统?Arm Windows 11下载方法

Rose

windows 11 pd虚拟机 Mac虚拟机 Parallels Desktop 19

钱包开发:区块链钱包热钱包​加密货币开发公司集成服务

区块链软件开发推广运营

交易所开发 dapp开发 区块链开发 链游开发 NFT开发

SaaS 出海,如何搭建国际化服务体系?(三)

LigaAI

SaaS 远程会议 高效协作 出海企业 SaaS 增长

等你加入!文心开发者说分享者招募全面开启

飞桨PaddlePaddle

开发者 文心 文心开发者说

设计模式-单例模式概述 | 京东云技术团队

京东科技开发者

设计模式 单例模式 结构型模式 创建型模型 企业号11月PK榜

Lunar Pro for Mac(屏幕亮度调整软件) v6.2.7激活版

Rose

Mac破解软件 Lunar for Mac 显示器亮度调整

大模型训练中Loss出现NaN的解决策略

百度开发者中心

大模型训练 大模型 LLM

Transformer与预训练语言模型的探索

百度开发者中心

人工智能 大模型 LLM

飞桨国际化应用案例:挪威广告企业Adevinta应用PaddleOCR提质增效

飞桨PaddlePaddle

广告 OCR 飞桨 飞桨PaddlePaddle

【行云流水线实践】基于“OneBuild”方法对镜像进行快速装箱 | 京东云技术团队

京东科技开发者

云原生 CI/CD Docker 镜像 企业号11月PK榜

详述 IntelliJ IDEA 遇到 Maven 项目 pom.xml 文件没有识别的解决方法

Rose

IntelliJ IDEA

生产管理MES系统的功能和作用/开源MES

万界星空科技

数字化转型 生产管理系统 mes #开源 开源mes

BES 在大规模向量数据库场景的探索和实践

Baidu AICLOUD

elasticsearch 向量检索 大模型

开发第一个flutter应用时需要注意什么

Onegun

flutter 前端框架

一文带你了解什么是“三渲二”?

Finovy Cloud

3D 建模 影视动漫

API管理平台搭建过程问题总结

谷云科技RestCloud

API ipaas API 安全

Elasticsearch实战:常见错误及详细解决方案

汀丶人工智能

Elastic Search

无需数据搬迁,10倍性能提升!携程的统一分析之旅

StarRocks

数据库 StarRocks

Topaz Video AI 使用教程:去隔行和升级嘈杂的镜头

Rose

mac软件下载 Topaz Video AI破解版 视频增强软件 Topaz Video AI 教程

SecureCRT常见问题|不允许从系统上的所有字体中进行选择

Rose

SSH SecureCRT激活 SecureCRT常见问题 SecureCRT不能选择字体 SecureCRT Mac破解版

Cinema 4D 2023常见问题:c4d 2023看不到新的加厚和对称对象怎么办?

Rose

c4d 2023 加厚和对称对象 Cinema 4D中文破解

大模型在金融监管科技中的应用价值

百度开发者中心

人工智能 大模型 LLM模型

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