免root微x模块了机的朋友们,有试过x框架能用吗

经验18643 米
在线时间335 小时
版本7.10.12
机型红米Note 3-全网通版
签到次数73
MIUI版本7.10.12
本帖最后由 神の上帝♂ 于
17:18 编辑
【本帖长期不定时更新 [最后更新时间:]】
楼主在红米Note3全网通,红米Note4X骁龙版实际测试,其它小米机型通用本贴同时包含解BL锁,解system分区锁,刷入SuperSU [获取完整Root权限]的步骤基于安卓6.0MIUI9的XP版本是V87.1(MIUI8的XP仍然选择V87),MIUI9刷V87会卡米,所以必须要V87.1的XP才能成功刷入,网盘的XP资源会持续同步到最新
注意!安卓7.0虽然可用的Xposed,不过是在前几天出的,不是作者发布但是能用部分模块,但成功的系统基本都是基于原生安卓的第三方ROM(比如魔趣等),MIUI有机油尝试刷入失败,所以需要等待适配MIUI的专版XP请各位安卓7.0的机油耐心等等吧。。。
其它机型详细刷Xposed框架 [以下简称XP] 的详细教程:
双网通教程链接:
小米4的教程链接:小米5的教程链接:
这是本帖需要的Root卡刷包(SuperSU)和XP卡刷包和apk文件的百度云链接,安装步骤在第5、6步链接: 提取码:87vp分享一些我正在使用的模块 [不定期更新]链接传送门:
【重点】 [不了解的机油必看]遇到问题请务必耐心认真阅读本帖!遇到问题请务必耐心认真阅读本帖!遇到问题请务必耐心认真阅读本帖! [重要的事情说三遍] 基本上大部分问题和解决办法会在帖子下面会提及,有未提及的情况请回复,会在后续会不断完善推荐各位机油用电脑版看 [用手机的机油可以把帖子链接复制到浏览器打开,并且拉到最底下,点击电脑版即可] ,排版相对更加直观,因为论坛APP看着比较乱,而且可能会出现回复看不到链接的情况这是我花了半天时间一点一点打出来的,如果你觉得此帖没必要,很烂,请你不要随意喷,毕竟大部分人并不是都会搞XP,而且我觉得你有时间喷我,不如也去写篇教程帖子去造福他人,不是吗?
之前已经有不少热心的机油写过很多关于安装XP框架的详细教程,因为大部分教程没有图文结合,一般人第一次接触可能不是很理解,还有机油想安装却不知道该搜什么帖子,所以我想写一篇尽量通俗且详细的教程让不是很明白如何安装XP框架的机油们能更好地了解一下安装方法。按照本文的步骤一般是不会遇到卡米等问题,欢迎各位机油留言~
最近有很多朋友想搞QQ防撤回或者只是单纯想美化一下系统,比如改成IOS状态栏之类的,当然,做这些东西的前提是先得装上XP,XP是什么?XP是一款可以在不修改APK的情况下影响程序运行(修改系统)的框架服务,基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运作(摘自百度百科),XP是一把双刃剑,有了XP,你的手机可以发挥出它的无限潜能,但耗电也会更加明显,系统不是特稳定,所以使用XP请务必三思而后行!如果在原生Android里直接安装XP就可以了。不过我们都知道,MIUI是基于Android的第三方深度定制开发的ROM,具有自己的特色,底层文件改动较大。如果你强行装官方的XP要么无效要么会卡米 [即手机无法正常开机] ,相对原生Android,MIUI安装XP会有些麻烦,所以我们必须通过其他办法来搞XP,本文就是让你用相对方便稳定的方法装XP其实不刷第三方Rec【Recovery】,用XP安装器也是可以的,相比第三方Rec刷更方便,现在V87的XP安装器相对稳定,目前我推荐用Rec搞XP(?3[▓▓])
不了解刷机等的机油可参考此贴,友情传送门:不了解第三方Rec的机油可参考此贴,友情传送门:如果您的手机是定制机可参考此贴,友情传送门:
===============分割线===============
本贴分为五大步骤,那么开始吧~
No1. 【解BL锁】不然以下步骤无法继续,那么该如何解BL锁呢?当然是去官方申请解锁咯解锁地址:,解锁教程及问题:[内测组成员申请后第二天就能通过,普通用户最快需要2天左右,最长需要大概一周这样,需要人品,各位机油好好努力吧~]在电脑上下载解锁工具,然后手机连接电脑,手机要开启开发者选项的USB调试中的MTP传输模式,然后在关机状态下同时按住 [电源键] 和 [音量-] 进入 【Fastboot模式】,即一只米兔和一个安卓机器人的界面
[图示如下]
R.jpg (25.98 KB, 下载次数: 2)
在电脑打开解BL锁工具,按提示依次操作,在登录的时候提示密码错误需要等一下,小米会发短信到你手机,有个验证码,把验证码填到密码后面就行,如果没成功可能是手机的小米账号登录未满6个小时或者是驱动未安装
[图示如下]
未命名_meitu_0_meitu_1_meitu_1.jpg (375.86 KB, 下载次数: 0)
No.2 【刷入第三方Rec】 [两种方式](1) [手机端] 没有电脑的机油们可以参考此帖,教程地址:(2) [电脑端] 楼主是使用这个方法刷入的,这里给大家推荐一个一键刷入的第三方Rec,是红米Note3全网通专用的Rec,其他机型如双网通则换成本身机型专用Rec就行啦,操作流程基本一致作者:cofface,转自: ,第三方Rec下载链接:提取码:n54b,解压密码:其它机型第三方Rec下载地址:接着在手机在关机状态下 同时按住 [音量-] 和[电源键] 进入【Fatboot模式】,然后在电脑上解压压缩包,打开 【一键刷入recovery(需要先解bl锁).bat】 ,随后按任意键 [比如回车键] ,一直这样操作直到成功刷入Rec,然后手机会自行重启到Rec
[图示如下]
的.jpg (218.63 KB, 下载次数: 1)
No.3 【解锁system分区】 [两种方式](1)【手机端】进入第三方Rec内解锁system分区,如果你没解锁system分区,Rec会识别并提示,一般会在OTA后会自行提示,滑动即可破解system分区
[图示如下]
SR.jpg (168.35 KB, 下载次数: 4)
【手机端】或者通过此APP来解锁system分区,友情传送门:
(2)【电脑端】电脑下载文件一键破解system分区,虽然是红米3的帖子不过红米Note3全网通亲测可用 [其它机型通用] ,友情传送门:在电脑上解压压缩包,打开 【一键解锁.bat】,按照提示会在第二条虚线下出现一段英文内容,如果解锁成功的话,手机会自行重启,如果没成功手机则没有反应
[图示如下]
ss.jpg (144.72 KB, 下载次数: 0)
No4.【获取Root】 [使用开发版自带的Root,此步可以跳过]先下载SuperSU包 [Root包] ,再进入Rec,选择【安装】然后选择你下载的SuperSU包的位置
[图示如下]
Root.jpg (431.04 KB, 下载次数: 16)
No5.【刷入XP】感谢SolarWarez大神制作的XP包,同时也是xMIUI和xNubia模块的作者,链接在帖子最上面,百度云的文件夹已说明,请自行下载对应Android版本的XP包!否则就无法刷入成功!以下是红米Note3全网通MIUI8基于Android6.0的操作步骤 [Android5.0,5.1通用,其它机型也通用] 如果看到最后那个界面,恭喜你!成功刷入XP啦~
[图示如下]
XP.jpg (490.08 KB, 下载次数: 16)
===============分割线===============
常见问题及其解决办法 [关于刷第三方Rec,SuperSU和XP等]Q:稳定版可以刷第三方Rec,SuperSU包和XP包吗?A:可以的,如果觉得麻烦的机油只要解BL锁后,即可在稳定版下刷第三方Rec,而不用再特意去刷开发版,这个看个人咯
Q:刷了第三方Rec是否能正常OTA升级到最新稳定版 [开发版或内测版] ?A:可以的,这并不会影响,只是每次OTA需要完整包才行,不然无法成功更新,当然更新完就必须重新刷SuperSU和XP咯
Q:刷第三方Rec会不会恢复官方Rec?A:这个不会,在第4步破解system分区有提及,每次OTA [即更新系统] 后重启会提示,滑动即可禁止恢复官方Rec
Q:进入Rec读取不了内置存储 [即存储为0M] 怎么解决?A:这个情况请格式化data分区,如果还是不行的话可以去刷地瓜大大的Rec或者其它第三方Rec [若出现同样情况同格式化data分区] ,刷入SuperSU和XP操作流程都是一样
Q:刷入SuperSU或XP怎么卡米了?A:这个情况有很多,有可能是安装时间比较长 [比如我这里是需要等待10分钟左右] ,等一会就OK了,如果等待时间太长也可以尝试长按电源键数秒强制重启看看,如果还不行进入Rec双清 [即格式化data分区] ,或者可以进入Rec重新刷完整包
Q:为什么刷入SuperSU和XP桌面没有这两个图标?A:因为SuperSU包和XP包里并没有apk文件,需要在百度云链接里下载,后缀名为.apk的就是apk文件了,安装后桌面就会出现这两个APP的图标
Q:为什么按照教程做,手机却卡米了 [即开不了机或者黑屏] ?A:有可能是哪一步操作不当导致,或者也有可能是XP不兼容导致的,如果以上都没有符合你的问题,可以与我私信反馈
Q:为什么刷入XP后有的APP停止运行 [或一直打不开]A:可能是刷入XP后数据冲突导致的,可以尝试清除相关APP的数据
常见问题及其解决办法+部分楼主个人提示[关于模块]最新开发版勾选激活幸运破解器会导致手机卡米 [也就是开不了机] ,是因为此模块本身问题,和MIUI不兼容,所以想使用此模块破解APP或者Android核心请给幸运破解器Root权限即可,请勿激活
弹幕通知请注意谨慎使用,效果尽量不要太高,特别是QQ这类频繁推送通知消息的APP,建议不要勾选持续性弹幕或者尽量别开弹幕,消息通知过多会导致手机卡死
xMIUI,MIUI8 Tweaks,FSBI三个模块的部分功能会冲突,建议不要同时使用修改状态栏的功能,使用xMIUI会导致2个退烧的状态栏温度无法显示
使用米秒的时间在替换主题后会消失,重启即可解决
微X和QX模块更新后导致无法使用,解决办法:在XP列表取消勾选QW/微X,重启,接着打开XP列表勾选QX/微X,再重启即可
QQ红包会导致微信闪退,黑屏或者卡FC,解决办法 [来自酷安某热心机油分享的,亲测有效,感谢他!]
: [用re管理器把/data/data/com.tencent.mm/tinker里面的东西删掉,然后权限设定全0就OK了]
只要不是针对系统模块而是针对APP的模块一般都可用,比如一键转发那些,不过我没怎么用所以就没有放在应用集,见谅_(:з」∠)_
若觉得本贴对您有帮助的话请点赞、顶贴、评分、收藏,3Q ^_^ ~
jjj.jpg (98.74 KB, 下载次数: 2)
分享到微信朋友圈
打开微信,点击底部的“发现”,使用 “扫一扫” 即可将网页分享到我的朋友圈。
已有&133&人评分
MIUI 因你更精彩!
感谢分享^_^
精品文章^_^
精品文章^_^
助人为乐^_^
精品文章^_^
MIUI 因你更精彩!
精品文章^_^
MIUI 因你更精彩!
MIUI 因你更精彩!
MIUI 因你更精彩!
感谢分享^_^
助人为乐^_^
MIUI 因你更精彩!
MIUI 因你更精彩!
MIUI 因你更精彩!
精品文章^_^
助人为乐^_^
MIUI 因你更精彩!
经验&+234&
经验18643 米
在线时间335 小时
版本7.10.12
机型红米Note 3-全网通版
签到次数73
MIUI版本7.10.12
本帖最后由 神の上帝♂ 于
16:53 编辑
如果遇到本贴木有提及的情况及解决办法,请回帖说明!或者私信我(因为是解答组成员的缘故不能一一回复,如果有什么问题可以直接私信我,我一定会回复,若暂时没有回复急于联系可以加我QQ)请加我QQ说明【记得认真回答一下验证问题,只要在任意问题回答小米或者MIUI论坛就可以了,因为一些原因设置问题请见谅】QQ:,有问题可以直接问,欢迎交流~【求萌妹萝莉御姐!!!嘿嘿嘿~】没回复请点戳一戳,我看到会立马回复,不过有的问题请认真看完帖子再回复,因为大部分问题和操作步骤都在帖子有详细说明,如果是帖子提及的情况一律不回复【最好不要问在吗什么的,也不要说太简略比如手机卡米这样的】因为楼主是高三狗,学业繁重,明年就要高考了,所以精力不会集中在这里
经验6656 米
在线时间133 小时
版本7.9.27
积分 7340, 距离下一级还需 12660 积分
积分 7340, 距离下一级还需 12660 积分
机型小米手机5
签到次数36
MIUI版本7.9.27
经验1219 米
在线时间29 小时
版本V8.1.11.0.MCFCNDI
积分 1455, 距离下一级还需 545 积分
积分 1455, 距离下一级还需 545 积分
机型红米Note4X 高通版
MIUI版本V8.1.11.0.MCFCNDI
这么简单的事谁不会,还用你教
已有&2&人评分
助人为乐^_^
助人为乐^_^
经验797 米
在线时间11 小时
版本V8.5.6.0.MHOMIED
积分 824, 距离下一级还需 1176 积分
积分 824, 距离下一级还需 1176 积分
机型红米Note3 全网通国际版
签到次数72
MIUI版本V8.5.6.0.MHOMIED
谢谢,刷了第三方Rec会不会又被小米的给刷回去?之前刷过第三方的rec一更新系统就又回去了?
经验18643 米
在线时间335 小时
版本7.10.12
机型红米Note 3-全网通版
签到次数73
MIUI版本7.10.12
谢谢,刷了第三方Rec会不会又被小米的给刷回去?之前刷过第三方的rec一更新系统就又回去了? ...
并不会,在OTA的时候会提示要不要还原官方Rec,滑动过去就不会恢复了
经验1125 米
在线时间86 小时
版本V8.0.7.0.LHOCNDG
积分 1415, 距离下一级还需 585 积分
积分 1415, 距离下一级还需 585 积分
机型红米Note 3-全网通版
MIUI版本V8.0.7.0.LHOCNDG
没有模块下载地址
在线时间7 小时
积分 7, 距离下一级还需 43 积分
积分 7, 距离下一级还需 43 积分
机型红米Note3 全网通
MIUI版本6.9.9
通过手机发布
楼主申请解锁大概多长时间才能通过。迫不及待想要刷机了
经验1909 米
在线时间6 小时
版本6.10.13
积分 2327, 距离下一级还需 2673 积分
积分 2327, 距离下一级还需 2673 积分
机型红米Note 3-全网通版
MIUI版本6.10.13
干嘛用的?
经验17820 米
在线时间1021 小时
版本7.10.12
机型红米Note3 全网通
签到次数39
MIUI版本7.10.12
通过手机发布
经验18643 米
在线时间335 小时
版本7.10.12
机型红米Note 3-全网通版
签到次数73
MIUI版本7.10.12
没有模块下载地址
今天晚上前更新
米兔月饼勋章
参加回帖活动
MIUI七夕鹊桥勋章
MIUI七周年
MIUI 9纪念勋章
小米众筹2周年
参加回帖活动
新版论坛APP
更新新版APP
小米7周年勋章
2017米粉节晒单赢专属勋章
“澎湃S1 ”芯片纪念勋章
参与活动回帖可得
参与红米Note 4X活动
2017年小金鸡勋章
回复2016年度评选活动贴
APP 1000万
MIUI论坛APP注册用户突破1000万纪念勋章
小火箭勋章
神舟11号 话题活动
MIUI 300周
MIUI 300周更新纪念勋章
为奥运加油勋章
为奥运加油勋章
解答组专属勋章
解答组专属勋章
已关注极客秀微信
已关注微信
关注腾讯微博
已关注腾讯微博
关注新浪微博
已关注新浪微博
MIUI六周年
MIUI六周年纪念勋章
1000万用户纪念勋章
MIUI1000万用户纪念勋章
小米六周年
小米六周年米粉节
MIUI 7纪念勋章
MIUI五周年
MIUI五周年纪念勋章
Copyright (C) 2017 MIUI
京ICP备号 | 京公网安备34号 | 京ICP证110507号无需Root也能Hook?——Depoxsed框架演示 - cangck_x的博客 - CSDN博客
无需Root也能Hook?——Depoxsed框架演示
转载请标注:http://blog.csdn.net/yzzst&
之前我们介绍过rovo89在Githu上的Xposed框架,我们也介绍了如何使用Xposed框架进行
登录劫持,和广告注入。
但是,之后很多朋友都在问我,这个Xposed框架使用起来很确实很好用。可是就是有一
个巨大的缺点,就是需要Root权限。很多设备都没有Root权限,有没有一个不需要Root
权限的Hook框架。
答案是,确定的。就是目前的Alibab的开源框架,Dexposed框架。
github地址 :&
它的官方介绍如下:
它基于ROOT社区著名开源项目Xposed改造剥离了ROOT部分,演化为服务于所在应用自
身的AOP框架,并在Apache 2.0协议下开源。
Xposed是XDA社区用户rovo89开发并管理的一个项目,它通过修改&
Dalvik运行时的Zygote进程,使用Xposed&
Bridge将第三方代码注入到应用的方法调用中,实现非侵入式的在运行期动态
修改系统和应用行为的能力。
Dexposed的原理也是很简单,如它介绍中所说的。它是Xposed框架剥离掉了Root部分的
不熟悉Xposed原理的,可以看这里
没有Root权限,那么Xposed框架式无法替换app_process的,当然也就无法进行整个系统
级应用程序的注入了。当然,对自我程序本身还是没有问题的。
目前Dexposed的主要应用场景有以下几种:
AOP编程插桩 (如测试、性能监控等)在线热补丁SDK hooking以提供更好的开发体验
AOP为Aspect Oriented&
Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程
序功能的统一维护的一种技术。
看到这里,很多小伙伴估计都会产生疑问,我靠,不能进行登录劫持了,不能注入广告
了。我用你来干什么。/(ㄒoㄒ)/~
AOP编程,在线热补丁
没错,Dexposed框架主要的功能,还是提供作为AOP框架使用。这么一来的话,我们之前
也介绍过Android的插件实现方式。这里我们所用Dexposed框架来实现的话,插件模型将
会更加简单。
首先先介绍一下,Dexposed框架也提供了一个与Xposed框架类似的方法。
* 该系统是否支持hook
public static synchronized boolean canDexposed(Context context)
* 寻找并hook一个指定的方法
* @param clazz 类的class
* @param methodName hook的方法名称
* @param parameterTypesAndCallback 参数和返回callback
public static Unhook findAndHookMethod(Class&?& clazz, String methodName, Object... parameterTypesAndCallback)12345678910111213141234567891011121314
在线热补丁实例
如何进行在线的热补丁呢?我们这里以alibaba的demo为例。
如在主线版本中,我们有一个showDialog方法。已经发布出去了。但是,突然发现有一
点bug或者突发性需求,我们不能够理解的发版更新。
这里就能够通过之前我们所说的DexClassLoader的方式,载入线上的插件Path.apk
2. 通过Dexposed框架,动态的Hook并替换主线版本中的showDialog函数方法。
具体的逻辑如下图所示:
看到上面的效果说明图之后,相信大家对Dexposed的在线热补丁已经有一定的了解了。
这里我们也不用做过多的赘述。
当然,你可能想到很多使用热补丁的应用方向,比如:
Bug补丁修复插件功能等等
Dexposed框架原理很简单,功能也算不上强大。但是,确实特别实用。我也是推荐各大
Android开发者,特别是创业公司使用。是墙裂推荐!!
下面是主工程中与补丁工程中的逻辑实现。这里,童鞋们可以对比着效果图看一下。
如果大家对动态的使用DexClassLoader载入一个apk代码还存在疑问。 可以clone一下
dexposed的源码学习学习。
当然,这里还是推荐大家去我的博客看看,Android的插件原理。&
主工程中,MainActivity showDialog方法的定义
public class MainActivity extends Activity {
private void showDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(&Dexposed sample&)
.setMessage(&Please clone patchsample project to generate apk, and copy it to \&/Android/data/com.taobao.dexposed/cache/patch.apk\&&)
.setPositiveButton(&ok&, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}).create().show();
}12345678910111213141234567891011121314
在线热补丁,Path.apk中的代码
* 插件的补丁类
public class DialogPatch implements IPatch {
public void handlePatch(final PatchParam arg0) throws Throwable {
Class&?& cls = null;
cls= arg0.context.getClassLoader().loadClass(&com.taobao.dexposed.MainActivity&);
} catch (ClassNotFoundException e) {
e.printStackTrace();
DexposedBridge.findAndHookMethod(cls, &showDialog&, new XC_MethodReplacement() {
protected Object replaceHookedMethod(MethodHookParam param) throws Throwable {
Activity mainActivity = (Activity) param.thisO
AlertDialog.Builder builder = new AlertDialog.Builder(mainActivity);
builder.setTitle(&Dexposed sample&)
.setMessage(&The dialog is shown from patch apk!&)
.setPositiveButton(&ok&, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}).create().show();
return null;
}123456789101112131415161718192021222324252627282930313233343536123456789101112131415161718192021222324252627282930313233343536
我的热门文章无需Root也能Hook?——Depoxsed框架演示
发表于 16:10|
作者周圣韬
摘要:Xposed可以实现非侵入式的在运行期动态修改系统和应用行为的能力,但有着一个巨大的缺点,就是需要Root权限。本文作者介绍并演示了无需Root也能Hook的Alibaba开源框架Depoxsed方案。
CSDN移动将持续为您优选移动开发的精华内容,共同探讨移动开发的技术热点话题,涵盖移动应用、开发工具、移动游戏及引擎、智能硬件、物联网等方方面面。如果您想投稿、参与内容翻译工作,或寻求近匠报道,请发送邮件至tangxy#csdn.net(请把#改成@)。&
作者简介:周圣韬,百度高级Android开发工程师,博客地址:
之前我们介绍过rovo89在GitHub上的Xposed框架,也介绍了如何使用Xposed框架进行登录劫持和广告注入。但是,之后很多朋友都在问我,这个Xposed框架使用起来很确实很好用。可是就是有一个巨大的缺点,就是需要Root权限。很多设备都没有Root权限,有没有一个不需要Root权限的Hook框架。
答案是,肯定的。那就是目前的Alibaba的开源框架,Dexposed框架。
Github地址 :
它的官方介绍如下:
它基于ROOT社区著名开源项目Xposed改造剥离了ROOT部分,演化为服务于所在应用自身的AOP框架,并在Apache 2.0协议下开源。
Xposed是XDA社区用户rovo89开发并管理的一个项目,它通过修改Android Dalvik运行时的Zygote进程,使用Xposed&
Bridge将第三方代码注入到Android应用的方法调用中,实现非侵入式的在运行期动态修改系统和应用行为的能力。
Dexposed的原理也是很简单,如它介绍中所说的。它是Xposed框架剥离掉了Root部分的功能。不熟悉Xposed原理的,可以看。
没有Root权限,那么Xposed框架式无法替换app_process的,当然也就无法进行整个系统级应用程序的注入了。当然,对自我程序本身还是没有问题的。
目前Dexposed的主要应用场景有以下几种:
插桩 (如测试、性能监控等)
在线热补丁
SDK hooking以提供更好的开发体验
AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。
看到这里,很多小伙伴估计都会产生疑问,我靠,不能进行登录劫持了,不能注入广告了,我用你来干什么。/(ㄒoㄒ)/~
AOP编程,在线热补丁
没错,Dexposed框架主要的功能,还是提供作为AOP框架使用。这么一来的话,我们之前也介绍过Android的插件实现方式。这里我们所用Dexposed框架来实现的话,插件模型将会更加简单。
首先先介绍一下,Dexposed框架也提供了一个与Xposed框架类似的方法。
* 该系统是否支持hook
public static synchronized boolean canDexposed(Context context)
* 寻找并hook一个指定的方法
* @param clazz 类的class
* @param methodName hook的方法名称
* @param parameterTypesAndCallback 参数和返回callback
public static Unhook findAndHookMethod(Class&?& clazz, String methodName, Object... parameterTypesAndCallback)
在线热补丁实例
如何进行在线的热补丁呢?我们这里以Alibaba的Demo为例。如在主线版本中,我们有一个showDialog方法。已经发布出去了。但是,突然发现有一点Bug或者突发性需求,我们不能够理解的发版更新。
这里就能够通过之前我们所说的DexClassLoader的方式,载入线上的插件Path.apk。&
通过Dexposed框架,动态的Hook并替换主线版本中的showDialog函数方法。
具体的逻辑如下图所示:
看到上面的效果说明图之后,相信大家对Dexposed的在线热补丁已经有一定的了解了,这里我们也不用做过多的赘述。
当然,你可能想到很多使用热补丁的应用方向,比如Bug补丁修复、插件功能等等。Dexposed框架原理很简单,功能也算不上强大。但是,确实特别实用。我也是推荐各大Android开发者,特别是创业公司使用。
下面是主工程中与补丁工程中的逻辑实现。这里,童鞋们可以对比着效果图看一下。如果大家对动态的使用DexClassLoader载入一个apk代码还存在疑问,可以clone一下dexposed的源码学习学习。
主工程中,MainActivity showDialog方法的定义:
public class MainActivity extends Activity {
//..........一些忽略掉的代码
private void showDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Dexposed sample")
.setMessage("Please clone patchsample project to generate apk, and copy it to \"/Android/data/com.taobao.dexposed/cache/patch.apk\"")
.setPositiveButton("ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}).create().show();
在线热补丁,Path.apk中的代码:
* 插件的补丁类
public class DialogPatch implements IPatch {
public void handlePatch(final PatchParam arg0) throws Throwable {
// 获取主程序的ClassLoader
Class&?& cls =
// 获取主程序的MainActivity类
cls= arg0.context.getClassLoader().loadClass("com.taobao.dexposed.MainActivity");
} catch (ClassNotFoundException e) {
e.printStackTrace();
// hook并替换MainActivity中的showDialog方法
DexposedBridge.findAndHookMethod(cls, "showDialog", new XC_MethodReplacement() {
protected Object replaceHookedMethod(MethodHookParam param) throws Throwable {
// 弹出一个插件中的Dialog
Activity mainActivity = (Activity) param.thisO
AlertDialog.Builder builder = new AlertDialog.Builder(mainActivity);
builder.setTitle("Dexposed sample")
.setMessage("The dialog is shown from patch apk!")
.setPositiveButton("ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}).create().show();
将于10月15-16日在北京新云南皇冠假日酒店召开。大会特设五大技术专场:平台与技术iOS、平台与技术Android、产品与设计、游戏开发、企业移动化。此外,大会更是首次举办国内极具权威影响力的IoT技术峰会,特设硬件开发技术与虚拟现实两大专场。大会将聚集国内最具实力的产品技术团队,与开发者一道进行最前沿的探讨与交流。
第一时间掌握最新移动开发相关信息和技术,请关注mobilehub公众微信号(ID: mobilehub)。
推荐阅读相关主题:
CSDN官方微信
扫描二维码,向CSDN吐槽
微信号:CSDNnews
相关热门文章

我要回帖

更多关于 findxroot 的文章

 

随机推荐