如何正确的使用Xposed插件

本篇文章给大家分享的是有关如何正确的使用Xposed插件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

1.先新建一个android project(推荐用android studio)

这个project不需要任何activity,相关的组件引用也可以删光,这样编译后的apk就很小了。

2.修改项目的build.gradle

追加2个配置

repositories{
jcenter();
}
dependencies{
provided‘de.robv.android.xposed:api:82'
}

如何正确的使用Xposed插件

3.修改AndroidManifest.xml 让xposed能识别这个插件

正常情况下,xposed是无法识别我们的应用是不是xposed插件的,我们必须在manifest上打上一个标签来声明自己。官方给的例子如下

<?xmlversion="1.0"encoding="utf-8"?>
<manifestxmlns:android="http://schemas.android.com/apk/res/android"
package="de.robv.android.xposed.mods.tutorial"
android:versionCode="1"
android:versionName="1.0">

<uses-sdkandroid:minSdkVersion="15"/>

<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name">
<meta-data
android:name="xposedmodule"
android:value="true"/>
<meta-data
android:name="xposeddescription"
android:value="Easyexamplewhichmakesthestatusbarclockredandaddsasmiley"/>
<meta-data
android:name="xposedminversion"
android:value="53"/>
</application>
</manifest>

简单的讲,就是application配置段内添加如下3个属性就好了

<meta-data
android:name="xposedmodule"
android:value="true"/>
<meta-data
android:name="xposeddescription"
android:value="Easyexamplewhichmakesthestatusbarclockredandaddsasmiley"/>
<meta-data
android:name="xposedminversion"
android:value="53"/>

4.实现xposed的接口

空白的class如下

packagecn.coderstory.xposeddemo;
publicclassDemo{

}

如果我们想要这个类有hook各种代码的能力,我们需要让这个类实现一些xposed框架提供的接口。

具体实现什么接口,需要看我们具体的需求。

常见的额接口如下

IXposedHookZygoteInit, IXposedHookLoadPackage, IXposedHookInitPackageResources

IXposedHookZygoteInit接口实现了ZygoteInit阶段的hook能力,用于在Zygote进程启动之前执行相关代码,framework里的东西一般再这里改。

IXposedHookLoadPackage接口实现了加载app阶段的hook能力,用于hook app的代码

IXposedHookInitPackageResources接口实现了加载app资源时的hook能力,用于修改app的一些资源,比如布局文件什么的。

如何正确的使用Xposed插件

5.写具体的代码逻辑

现在我们写一个功能,比如隐藏MIUI下拉菜单里面的搜索框

参考源码

packagecn.coderstory.xposeddemo;

importde.robv.android.xposed.IXposedHookInitPackageResources;
importde.robv.android.xposed.callbacks.XC_InitPackageResources;

/**
*Createdbyccon2017/1/3.
*隐藏MIUI下拉菜单搜索框
*/
//IXposedHookInitPackageResources接口实现修改资源app的资源文件
publicclassDemoimplementsIXposedHookInitPackageResources{

@Override
publicvoidhandleInitPackageResources(XC_InitPackageResources.InitPackageResourcesParamresparam){
//如果当前处理的是systemui
if(resparam.packageName.equals("com.android.systemui")){
//调用setReplacement方法替换名为config_show_statusbar_search的变量值为false
resparam.res.setReplacement(resparam.packageName,"bool","config_show_statusbar_search",false);
}
}
}

这样,功能就写好了。

6.创建和编辑xposed_init配置文件

接下来我们需要再项目里新建一个名为assets的目录,然后在目录里新建一个名为xposed_init的文件,文本类型的。这个文件主要记录了app里所有实现xposed功能的类,在开机的时候,xposed会依次加载这些类。

新建assets目录

如何正确的使用Xposed插件

新建xposed_init文件,类型选择Text

如何正确的使用Xposed插件

xposed_init里写当前类的路径 如果存在多个类,那么每行写一个,多个写多行

如何正确的使用Xposed插件

以上就是如何正确的使用Xposed插件,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注恰卡编程网行业资讯频道。

发布于 2021-06-13 23:19:38
收藏
分享
海报
0 条评论
306
上一篇:idea中怎么解决maven包冲突问题 下一篇:C语言中枚举(enum)和联合(union)的示例分析
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码