吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 12350|回复: 39
收起左侧

[Android 原创] Xposed 模块免重启开发(借助VirtualXposed)

[复制链接]
Blanke 发表于 2018-5-9 12:50
本帖最后由 Blanke 于 2018-5-9 12:54 编辑

本文同步至:github

Xposed 模块开发痛点

Xposed 模块修改之后是需要重启手机生效的,导致开发非常麻烦,改个代码运行还要重启,等待时间太长。

现有的方案

搜索了一下,有现成的方案,原理大多是修改 Xposed FrameWork 源码实现,还有一种思路是动态加载。但都有点麻烦,还存在一些问题,偶尔失效只能重启。
参考:
https://github.com/shuihuadx/XposedHook
https://www.jianshu.com/p/d5596196bd12
https://bbs.pediy.com/thread-223713.htm
http://androidwing.net/index.php/274

VirtualXposed 方案

VirtualXposed 主要功能是在非ROOT环境下运行Xposed模块。使用之后觉得它比较适合模块开发,原因几下几点:

  1. 支持免重启手机激活模块
  2. 对开发者友好,详见 wiki
  3. 项目开源,作者很活跃,遇到什么问题很快可以得到答复

但是还是有一些缺点的:

  1. 不支持 x86,也就是不支持模拟器,只能使用真机
  2. 暂不支持资源HOOK
  3. 部分插件的兼容性有问题
  4. 不能 hook 系统 API
  5. 使用必须将需要 hook 的 APP 和模块 APP 安装到VirtualXposed

如果以上缺点提到的有涉及的就不能使用该方案

Gradle Task 实现自动重启 VirtualXposed,自动更新模块

以下配置环境是 Android Studio
wiki 里提供重启 VirtualXposed 、自动更新 APP,打开某 APP 的广播方式。利用这些可以编写Gradle Task 实现运行项目自动更新模块 APP,自动重启VirtualXposed,自动打开需要 hook 的 APP。
需要先将需要 hook 的 APP 和模块先安装到 VirtualXposed,再进行以下设置:

  1. 将 Debug Configurations 里将 Gradle aware Make - 修改为 :app:installDebug
    image.png
  2. 修改 app/build.gradle 文件,在最下面增加如下代码
    afterEvaluate {
    installDebug.doLast {
        updateVirtualXposedAPP.execute()
        rebootVirtualXposedAPP.execute()
        launchVirtualXposedAPP.execute()
    }
    }
    // 更新 VXP 中的 app
    task updateVirtualXposedAPP(type: Exec) {
    def pkg = android.defaultConfig.applicationId
    commandLine android.adbExecutable, 'shell', 'am', 'broadcast', '-a', 'io.va.exposed.CMD', '-e', 'cmd', 'update', '-e', 'pkg', pkg
    }
    // 重启 VXP
    task rebootVirtualXposedAPP(type: Exec) {
    commandLine android.adbExecutable, 'shell', 'am', 'broadcast', '-a', 'io.va.exposed.CMD', '-e', 'cmd', 'reboot'
    }
    // 重启 VXP 需要 hook 的 APP,需要知道它的包名
    task launchVirtualXposedAPP(type: Exec) {
    def pkg = 'com.tencent.mm'// 需要 hook 的 app,这里是微信
    commandLine android.adbExecutable, 'shell', 'am', 'broadcast', '-a', 'io.va.exposed.CMD', '-e', 'cmd', 'launch', '-e', 'pkg', pkg
    }

    具体代码参见:MDWechat
    原理就是利用 Gradle Task 使用 adb  发送广播。
    以上配置好就可以愉快的敲代码了。

免费评分

参与人数 10吾爱币 +18 热心值 +10 收起 理由
C-ARan + 1 + 1 谢谢@Thanks!
Silenceww + 1 + 1 用心讨论,共获提升!
独行风云 + 1 + 1 谢谢@Thanks!
stars-one + 1 + 1 我很赞同!
xinkui + 1 + 1 谢谢@Thanks!
caixiaowei + 1 + 1 我很赞同!
qtfreet00 + 9 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
烟花易冷xx + 1 + 1 用心讨论,共获提升!
kk1212 + 1 + 1 谢谢@Thanks!
无辰 + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

玉米 发表于 2018-5-9 16:24
感到哈哈丶 发表于 2018-5-9 14:06
xposed 会不会导致手机 某些功能异常,我在一台联想4.4手机上安装过xposed,发现系统下载功能异常,一下载 ...

安卓5.0以上
感到哈哈丶 发表于 2018-5-9 14:06
xposed 会不会导致手机 某些功能异常,我在一台联想4.4手机上安装过xposed,发现系统下载功能异常,一下载就奔溃
welcometoken 发表于 2018-5-9 13:00
大神,厉害了!膜拜中!!!大神能否把我的oppo r11s root了。
myname 发表于 2018-5-9 13:36
大神,厉害了!膜拜中!!!大神能否把我的oppo r11s root了。
zhangjy_12 发表于 2018-5-9 14:04
膜拜!!!
kk1212 发表于 2018-5-9 14:40
不错   这个方法很好
gentleBai 发表于 2018-5-9 15:01
这个东西想学。先收藏了吧
熊猫love5426586 发表于 2018-5-9 15:02
这个东西牛叉了,先收藏了
宁宁宁 发表于 2018-5-9 15:07
Mark,有时间回来细看讲了些什么。  一直想了解Xposed 模块。
x12655 发表于 2018-5-9 15:29
  一直想了解Xposed 模块。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 21:27

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表