-
-
Notifications
You must be signed in to change notification settings - Fork 2.5k
Utilities For Xposed Module Developer
由于 VirtualXposed 可以实现不用重启手机就能使 Xposed模块生效,因此 Xposed 模块开发者可以用来进行快速开发。其中,VirtualXposed 以adb 命令的形式提供了一些便利接口供开发者使用。
首先,执行以下命令之前,需要确保 VirtualXposed 不是处于force-stop状态的;你可以通过以下命令,首先启动 VirtualXposed:
adb shell am start io.va.exposed/io.virtualapp.splash.SplashActivity
如果VirtualXposed已经启动,上述命令也不会有副作用。
这里的重启,并非指的「关闭VirtualXposed,然后重新打开」;而是 关闭 VirtualXposed 内部运行的所有APP,相当于重启VirtualXposed这个虚拟环境。
adb shell am broadcast -a io.va.exposed.CMD -e cmd reboot
adb shell am broadcast -a io.va.exposed.CMD -e cmd update -e pkg <package-name>
注意:目前只能把安装在系统中的APP,通过此命令安装到VirtualXposed中。如果VirtualXposed中没有安装,那么执行的是安装操作;如果VirtualXposed已经安装,那么执行的是更新操作。
adb shell am broadcast -a io.va.exposed.CMD -e cmd launch -e pkg <package-name>
效果等同于在VirtualXposed里面点图标进入对应的APP。
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的运行按钮就能实现上述效果: