1.Xposed是什么?
在Android系统中,应用程序进程以及系统服务进程SystemServer都是由Zygote进程孵化出来的,而Zygote进程是由Init进程启动的,Zygote进程在启动时会创建一个Dalvik虚拟机实例,每当它孵化一个新的应用程序进程时,都会将这个Dalvik虚拟机实例复制到新的应用程序进程里面去,从而使得每一个应用程序进程都有一个独立的Dalvik虚拟机实例,这也是Xposed选择替换app_process的原因。
2.在AndroidManifest.xml标签下添加配置:
<manifest xxx
<application xxx>
<!-- 1、标识自己是否为一个Xposed模块 -->
<meta-data
android:name="xposedmodule"
android:value="true"/>
<!-- 2、Xposed模块的描述信息 -->
<meta-data
android:name="xposeddescription"
android:value="a sample for xposed"/>
<!-- 3、支持Xposed框架的最低版本 -->
<meta-data
android:name="xposedminversion"
android:value="53"/>
</application>
</manifest>
3.配置XposedBridgeApi-xx.jar 与 build.gradle
compileOnly ‘de.robv.android.xposed:api:82’
compileOnly ‘de.robv.android.xposed:api:82:sources’
下面这个放在setting中,最新的项目编译依赖配置改到settings.gradle中了
这句代码是告诉AndroidStuido使用jcenter作为代码仓库,从这个仓库里远程寻找 de.robv.android.xposed:api:82 这个API,我们不用自己找XposedBridgeApi.jar了。
4.xposed_Init
Xposed框架会从这个 xposed_init 读取信息来找到模块的入口,然后进行Hook操作了
注意:最后选择禁用 Instant Run: 单击 File -> Settings -> Build, Execution, Deployment -> Instant Run,把勾全部去掉。因为如果勾选了Instant Run的话
5.实现hook操作的具体代码
6.效果如图,修改自看雪大佬的案例,尚在学习中,勿喷。