xposed模块编写教程_Xposed插件开发入门详解
前言
Xposed的用处不必言说,能hook任意java写的代码,修改替换apk内部的资源文件。
至于如何开发一个XPosed的插件,官方给出的答案如下:
看完这篇文章,基本能写出一个最简单的demo。
现在先讲讲这个最简单的demo怎么写
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上打上一个标签来声明自己。
官方给的例子如下
package="de.robv.android.xposed.mods.tutorial"
android:versionCode="1"
android:versionName="1.0" >
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
android:name="xposedmodule"
android:value="true" />
android:name="xposeddescription"
android:value="Easy example which makes the status bar clock red and adds a smiley" />
android:name="xposedminversion"
android:value="53" />
简单的讲,就是application配置段内添加如下3个属性就好了
android:name="xposedmodule"
android:value="true" />
android:name="xposeddescription"
android:value="Easy example which makes the status bar clock red and adds a smiley" />
android:name="xposedminversion"
android:value="53" />
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里写当前类的路径 如果存在多个类,那么每行写一个,多个写多行
7.编译安装
编译的时候需要关闭android studio的instant run 功能。
手机上安装后 需要在xposed install上勾选启用模块并重启。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
xposed模块编写教程_Xposed插件开发入门详解相关推荐
- xposed模块编写教程_Xposed插件开发入门详解,
Xposed插件开发入门详解, 前言 Xposed的用处不必言说,能hook任意java写的代码,修改替换apk内部的资源文件. 至于如何开发一个XPosed的插件,官方给出的答案如下: https: ...
- 最新的Xposed模块编写教程
原标题:新手不要再被误导!这是一篇最新的Xposed模块编写教程 查看全文 http://www.taodudu.cc/news/show-5139296.html 相关文章: smartbi问题_S ...
- xposed模块编写教程_新手不要再被误导!这是一篇最新的Xposed模块编写教程
在互联网上,关于Xposed模块编写的教程可谓是一抓一大把.但由于时间的推移,很多工具和方法都发生了变化(如Eclipse退出安卓编程舞台,AndroidStudio 不断升级导致其一些设置也随之变化 ...
- xposed模块编写教程_太极xposed模块使用教程
今天给大家分享一下太极xposed模块使用教程.很多小伙伴说下载不到Xposed模块,这个网上其实很多,但是第三方的下载站就算了吧.我也是一个深受其害的网瘾少年,只要是下载站的软件,一不留心一次性电脑 ...
- xposed模块编写教程_最新的Xposed模块编写教程
前言:最近看了很多的Xposed的入门教程,根据的我的实践,写此教程,希望对新手有所帮助. 1.编写一个被Hook的App.代码 1 packagecom.example.hookdemo;2 3 i ...
- virtualxposed使用教程_Xposed 插件开发入门教程(一)
其实网上已经有很多 Xposed 插件开发的入门教程了,我写的这篇与其说是教程,不如说是参考,为了防止以后忘了开发步骤,这里就写篇博客记录一下. 要使用 Xposed 插件,首先要 root 手机并安 ...
- android xposed如何写,Xposed插件开发入门详解
前言 Xposed的用处不必言说,能hook任意java写的代码,修改替换apk内部的资源文件. 至于如何开发一个XPosed的插件,官方给出的答案如下: 看完这篇文章,基本能写出一个最简单的demo ...
- AndriodStudio 开发环境下实现Xposed模块开发入门。Xposed框架模块编写教程
前言: Xposed框架是一款开源框架,其功能是可以在不修改APK的情况下影响程序运行(修改系统)的框架服务,基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运作.Xposed 就好比是 ...
- Xposed模块开发教程整理
Xposed模块开发教程 Xposed官网 Xposed官方文档 Xposed框架介绍 了解和使用Android神器Xposed框架 Xposed模块开发 Xposed模块开发入门 在手机状态栏增加显 ...
最新文章
- live555从RTSP服务器读取数据到使用接收到的数据流程分析
- mysql odbc 配置详解
- 垃圾回收器的基本原理是什么?
- 使用Subversion进行版本控制 附录A
- 远程连接MySql数据库
- HH SaaS电商系统的入库功能模块设计
- 令人拍案叫绝的EfficientNet和EfficientDet
- 设计师找灵感?集设用作品打动世界的窗口
- 弱引用WeakReference
- 【stata】一些关于数据处理的基础知识(备查代码)
- Hexo博客搭建以及主题使用
- 年底了,诈骗的怎么这么多?
- 通过className属性给一个元素追加新class(addClass函数)
- view-ui中select全选实现
- 合肥辰工科技有限公司
- nodejs-指定长度断句
- AI智能抠图工具--头发丝都可见
- php扇形分布图,php绘制一个扇形的方法
- [MRCTF2020]套娃
- 数据库表可以没有主键吗?