virtualxposed使用教程_Xposed 插件开发入门教程(一)
其实网上已经有很多 Xposed 插件开发的入门教程了,我写的这篇与其说是教程,不如说是参考,为了防止以后忘了开发步骤,这里就写篇博客记录一下。
要使用 Xposed 插件,首先要 root 手机并安装 Xposed 框架,这个是必须的(Xposed 安装相关教程请自行百度吧)。不过现在有一个 VirtualXposed 可以免 root 使用 Xposed,本人没有用过,就不多介绍了,有兴趣的朋友可以去搜索了解一下,下面就进入我们的 Xposed 插件开发教程。
步骤一:创建一个 Android 应用
打开 Android Studio 并创建一个 Android 应用,其实 Xposed 插件也是一个普通的 app,只不过需要添加一些额外的配置,以便 Xposed 能够识别这些插件,这个似乎没什么好说的,我就不啰嗦了。
步骤二:添加 Xposed 插件相关配置
首先在项目的 app 目录下的 build.gradle 文件中添加如下配置:
dependencies {
compileOnly 'de.robv.android.xposed:api:54'
}
其中 dependencies 表示项目的依赖项;compileOnly 表示此此包仅编译时使用,不会将相关代码打包进 apk;后面的数字 54 表示要支持的 Xposed 版本,这个可以根据需要自行调整。
接着在 AndroidManifest.xml 中按如下代码配置:
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
android:name="xposedmodule"
android:value="true" />
android:name="xposeddescription"
android:value="description" />
android:name="xposedminversion"
android:value="54" />
主要就是添加 3 个 meta-data 元素,其中 xposedmodule 表示此应用是一个 Xposed 插件;xposeddescription 为此插件的描述,插件安装后在 Xposed 插件页面可以看到此描述文本;而 xposedminversion 则表示要求的 Xposed 最低版本,通常这个字段要和前面的依赖项版本号相同。
步骤三:创建 Hook 类并实现相关代码
新建一个类,假设命名为 XposedInit,让此类实现 IXposedHookLoadPackage 接口,代码如下:
public class XposedInit implements IXposedHookLoadPackage {
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
XposedBridge.log("Loaded app: " + lpparam.packageName);
}
}
这里先打印一个 log 吧,具体的 hook 代码以后有时间再写篇博客,这里就不写了,不然这博客写不完了。
步骤四:配置 xposed_init
在 assets 目录下新建一个名为 xposed_init 的文件(文件名必须是这个,且无后缀),并将相关 hook 类的全限定名称写入此文件中,如有多个类,则每行写一个,如:
xxx.xxx.XposedInit
这一步是告诉 Xposed 我们的 hook 类是哪些,要不 Xposed 找不到我们的类就无法完成 hook 操作了。
步骤五:编译插件并安装到手机
使用 AndroidStudio 编译并生成签名的 apk 文件,然后安装到手机中,如无意外,Xposed 会提示我们插件已安装,并询问是否要开启插件并重启手机,重启后打开 Xposed 的日志界面就可以看到我们的插件输出的 log 了。
virtualxposed使用教程_Xposed 插件开发入门教程(一)相关推荐
- xposed模块编写教程_Xposed插件开发入门详解,
Xposed插件开发入门详解, 前言 Xposed的用处不必言说,能hook任意java写的代码,修改替换apk内部的资源文件. 至于如何开发一个XPosed的插件,官方给出的答案如下: https: ...
- xposed模块编写教程_Xposed插件开发入门详解
前言 Xposed的用处不必言说,能hook任意java写的代码,修改替换apk内部的资源文件. 至于如何开发一个XPosed的插件,官方给出的答案如下: 看完这篇文章,基本能写出一个最简单的demo ...
- 【直播回顾】蚂蚁金服高级开发工程师萧恺:IDEA 插件开发入门教程
主讲人:萧恺(蚂蚁金服-支付宝事业群-高级开发工程师) 本名:肖汉松 讲师介绍: 热爱阅读,喜欢挑战,热衷尝试新的技术,关注技术背后的原理. 关注领域:Java 服务端开发,分布式系统 关注语言:Ja ...
- 基于jquery插件开发入门教程
鉴于最近要使用大量的jquery,所以总有一种捣鼓文字来抒发一下情绪的冲动.思前想后就来篇jquery插件开发入门教程吧,毕竟如果不想开发插件,那自己无论用别人的插件多牛逼,最多只是js的使用者,作为 ...
- WMI 使用教程_.NET 入门教程
WMI 使用教程_.NET 入门教程 先介绍一下WMI 相关知识: 什么是WMI 呢? Windows 管理规范 (Windows Management Instrumentation ),它的主要 ...
- Docker教程(一) Docker入门教程
Docker教程(一) Docker入门教程 本文链接:https://blog.csdn.net/yuan_xw/article/details/51935278 Docker教程(一) Docke ...
- AFNnetworking快速教程,官方入门教程译
AFNnetworking快速教程,官方入门教程译 分类: IOS2013-12-15 20:29 12489人阅读 评论(5) 收藏 举报 afnetworkingjsonios入门教程快速教程 A ...
- Redis教程(一) Redis入门教程
Redis教程(一) Redis入门教程 1 Redis入门教程 Redis是一个 Key-Value存储系统.和 Memcached类似,它支持存储的 value类型相对更多,包括 string(字 ...
- Kafka教程(一)Kafka入门教程
Kafka教程(一)Kafka入门教程 1 Kafka入门教程 1.1 消息队列(Message Queue) Message Queue消息传送系统提供传送服务.消息传送依赖于大量支持组件,这些组件 ...
最新文章
- [UOJ55]紫荆花之恋
- ITK:读取网格并显示2个给定顶点之间的欧几里得距离
- zookeeper中展示所有节点_Zookeeper数据结构与监听机制
- 【计组实验】P1 logisim完成单周期处理器开发 MIPS指令集
- python统计分析---6.主成分分析
- [Ajax] 实现跨域访问
- mysql study_mysql_study_3
- linux系统开远程桌面,Linux 系统开启远程桌面的方法
- 基于Fisher准则的线性分类器设计
- 软件工程之软件设计③(概要设计说明书,详细设计说明书)
- arcgis 去除影像黑色边框(nodata)
- pycharm清华镜像源使用
- 费曼学习法、卡片盒笔记法
- 【2018ECCV】Zero-Shot Deep Domain Adaptation 零样本深度域适应
- SAP固定资产模块的表
- php微信端获取头像不显示不出来,解决微信转发到朋友圈没有获取页面头像以图标展示。...
- Improving Multimodal Fusion with Hierarchical Mutual InformationMaximization for Multimodal Sentimen
- shell条件测试操作
- ubuntu下linux:curl使用ftp获取服务器上指定目录的所有文件集合以及下载
- Google一天追踪你340次,零隐私时代需要怎样的区块链数字身份?
热门文章
- 【荐书】李彦宏《智能革命》:技术是时代的信仰
- 【本人秃顶程序员】过年了,给亲朋好友解释“啥是程序员”
- 生死看淡,不服就GAN(七)----用更稳定的生成模型WGAN生成cifar
- w7的计算机的工具在哪里,win7旗舰版内置的便签工具在哪?工具使用图解
- Python MySQLdb 模块使用方法
- 营业额=流量x转化率x客单价x复购率
- SpringBoot在controller返回一个HTML页面
- 鸟枪换炮,利用python3对球员做大数据降维(因子分析得分),为C罗找到合格僚机
- Linux学习(一)初识Linux(适合萌懂阶段)
- 皮尔逊相关系数实现相似K线及其性能优化