重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本篇文章给大家分享的是有关如何正确的使用Xposed插件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
我们提供的服务有:做网站、网站制作、微信公众号开发、网站优化、网站认证、精河ssl等。为近千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的精河网站制作公司
1.先新建一个android project(推荐用android studio)
这个project不需要任何activity,相关的组件引用也可以删光,这样编译后的apk就很小了。
2.修改项目的build.gradle
追加2个配置
repositories { jcenter(); }
dependencies { provided ‘de.robv.android.xposed:api:82' }
3.修改AndroidManifest.xml 让xposed能识别这个插件
正常情况下,xposed是无法识别我们的应用是不是xposed插件的,我们必须在manifest上打上一个标签来声明自己。
官方给的例子如下
简单的讲,就是application配置段内添加如下3个属性就好了
4.实现xposed的接口
空白的class如下
package cn.coderstory.xposeddemo; public class Demo { }
如果我们想要这个类有hook各种代码的能力,我们需要让这个类实现一些xposed框架提供的接口。
具体实现什么接口,需要看我们具体的需求。
常见的额接口如下
IXposedHookZygoteInit, IXposedHookLoadPackage, IXposedHookInitPackageResources
等
IXposedHookZygoteInit接口实现了ZygoteInit阶段的hook能力,用于在Zygote进程启动之前执行相关代码,framework里的东西一般再这里改。
IXposedHookLoadPackage接口实现了加载app阶段的hook能力,用于hook app的代码
IXposedHookInitPackageResources接口实现了加载app资源时的hook能力,用于修改app的一些资源,比如布局文件什么的。
5.写具体的代码逻辑
现在我们写一个功能,比如隐藏MIUI下拉菜单里面的搜索框
参考源码
package cn.coderstory.xposeddemo; import de.robv.android.xposed.IXposedHookInitPackageResources; import de.robv.android.xposed.callbacks.XC_InitPackageResources; /** * Created by cc on 2017/1/3. * 隐藏MIUI下拉菜单搜索框 */ //IXposedHookInitPackageResources接口实现修改资源app的资源文件 public class Demo implements IXposedHookInitPackageResources{ @Override public void handleInitPackageResources(XC_InitPackageResources.InitPackageResourcesParam resparam) { //如果当前处理的是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_init文件,类型选择Text
xposed_init里写当前类的路径 如果存在多个类,那么每行写一个,多个写多行
以上就是如何正确的使用Xposed插件,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联行业资讯频道。