Utilities For Xposed Module Developer

weishu edited this page Jun 17, 2018 · 6 revisions

由于 VirtualXposed 可以实现不用重启手机就能使 Xposed模块生效,因此 Xposed 模块开发者可以用来进行快速开发。其中,VirtualXposed 以adb 命令的形式提供了一些便利接口供开发者使用。

首先,执行以下命令之前,需要确保 VirtualXposed 不是处于force-stop状态的;你可以通过以下命令,首先启动 VirtualXposed:

adb shell am start io.va.exposed/io.virtualapp.splash.SplashActivity

如果VirtualXposed已经启动,上述命令也不会有副作用。

重启VirtualXposed

这里的重启,并非指的「关闭VirtualXposed,然后重新打开」;而是 关闭 VirtualXposed 内部运行的所有APP,相当于重启VirtualXposed这个虚拟环境。

adb shell am broadcast -a io.va.exposed.CMD -e cmd reboot

安装/更新APP

adb shell am broadcast -a io.va.exposed.CMD -e cmd update -e pkg <package-name>

注意:目前只能把安装在系统中的APP,通过此命令安装到VirtualXposed中。如果VirtualXposed中没有安装,那么执行的是安装操作;如果VirtualXposed已经安装,那么执行的是更新操作。

启动内部APP

adb shell am broadcast -a io.va.exposed.CMD -e cmd launch -e pkg <package-name>

效果等同于在VirtualXposed里面点图标进入对应的APP。

gradle 脚本

afterEvaluate {
    installDebug.doLast {
        updateVirtualXposedAPP.execute()
        rebootVirtualXposedAPP.execute()
        launchVirtualXposedAPP.execute()
    }
}

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
}

task rebootVirtualXposedAPP(type: Exec) {
    commandLine android.adbExecutable, 'shell', 'am', 'broadcast', '-a', 'io.va.exposed.CMD', '-e', 'cmd', 'reboot'
}

task launchVirtualXposedAPP(type: Exec) {
    def pkg = "The package you hooked" // for example: com.tencent.mm
    commandLine android.adbExecutable, 'shell', 'am', 'broadcast', '-a', 'io.va.exposed.CMD', '-e', 'cmd', 'launch', '-e', 'pkg', pkg
}

这样,直接执行 gradle clean installDebug 就能把Xposed模块装到VirtualXposed,并且直接打开对应的需要调试的APP。

如果你使用Android Studio,可以针对Edit Configuration 做如下配置,这样直接点击AS的运行按钮就能实现上述效果:

AS

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.