其实网上已经有很多 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 插件开发入门教程(一)相关推荐

  1. xposed模块编写教程_Xposed插件开发入门详解,

    Xposed插件开发入门详解, 前言 Xposed的用处不必言说,能hook任意java写的代码,修改替换apk内部的资源文件. 至于如何开发一个XPosed的插件,官方给出的答案如下: https: ...

  2. xposed模块编写教程_Xposed插件开发入门详解

    前言 Xposed的用处不必言说,能hook任意java写的代码,修改替换apk内部的资源文件. 至于如何开发一个XPosed的插件,官方给出的答案如下: 看完这篇文章,基本能写出一个最简单的demo ...

  3. 【直播回顾】蚂蚁金服高级开发工程师萧恺:IDEA 插件开发入门教程

    主讲人:萧恺(蚂蚁金服-支付宝事业群-高级开发工程师) 本名:肖汉松 讲师介绍: 热爱阅读,喜欢挑战,热衷尝试新的技术,关注技术背后的原理. 关注领域:Java 服务端开发,分布式系统 关注语言:Ja ...

  4. 基于jquery插件开发入门教程

    鉴于最近要使用大量的jquery,所以总有一种捣鼓文字来抒发一下情绪的冲动.思前想后就来篇jquery插件开发入门教程吧,毕竟如果不想开发插件,那自己无论用别人的插件多牛逼,最多只是js的使用者,作为 ...

  5. WMI 使用教程_.NET 入门教程

    WMI 使用教程_.NET 入门教程 先介绍一下WMI 相关知识:  什么是WMI 呢? Windows 管理规范 (Windows Management Instrumentation ),它的主要 ...

  6. Docker教程(一) Docker入门教程

    Docker教程(一) Docker入门教程 本文链接:https://blog.csdn.net/yuan_xw/article/details/51935278 Docker教程(一) Docke ...

  7. AFNnetworking快速教程,官方入门教程译

    AFNnetworking快速教程,官方入门教程译 分类: IOS2013-12-15 20:29 12489人阅读 评论(5) 收藏 举报 afnetworkingjsonios入门教程快速教程 A ...

  8. Redis教程(一) Redis入门教程

    Redis教程(一) Redis入门教程 1 Redis入门教程 Redis是一个 Key-Value存储系统.和 Memcached类似,它支持存储的 value类型相对更多,包括 string(字 ...

  9. Kafka教程(一)Kafka入门教程

    Kafka教程(一)Kafka入门教程 1 Kafka入门教程 1.1 消息队列(Message Queue) Message Queue消息传送系统提供传送服务.消息传送依赖于大量支持组件,这些组件 ...

最新文章

  1. [UOJ55]紫荆花之恋
  2. ITK:读取网格并显示2个给定顶点之间的欧几里得距离
  3. zookeeper中展示所有节点_Zookeeper数据结构与监听机制
  4. 【计组实验】P1 logisim完成单周期处理器开发 MIPS指令集
  5. python统计分析---6.主成分分析
  6. [Ajax] 实现跨域访问
  7. mysql study_mysql_study_3
  8. linux系统开远程桌面,Linux 系统开启远程桌面的方法
  9. 基于Fisher准则的线性分类器设计
  10. 软件工程之软件设计③(概要设计说明书,详细设计说明书)
  11. arcgis 去除影像黑色边框(nodata)
  12. pycharm清华镜像源使用
  13. 费曼学习法、卡片盒笔记法
  14. 【2018ECCV】Zero-Shot Deep Domain Adaptation 零样本深度域适应
  15. SAP固定资产模块的表
  16. php微信端获取头像不显示不出来,解决微信转发到朋友圈没有获取页面头像以图标展示。...
  17. Improving Multimodal Fusion with Hierarchical Mutual InformationMaximization for Multimodal Sentimen
  18. shell条件测试操作
  19. ubuntu下linux:curl使用ftp获取服务器上指定目录的所有文件集合以及下载
  20. Google一天追踪你340次,零隐私时代需要怎样的区块链数字身份?

热门文章

  1. 【荐书】李彦宏《智能革命》:技术是时代的信仰
  2. 【本人秃顶程序员】过年了,给亲朋好友解释“啥是程序员”
  3. 生死看淡,不服就GAN(七)----用更稳定的生成模型WGAN生成cifar
  4. w7的计算机的工具在哪里,win7旗舰版内置的便签工具在哪?工具使用图解
  5. Python MySQLdb 模块使用方法
  6. 营业额=流量x转化率x客单价x复购率
  7. SpringBoot在controller返回一个HTML页面
  8. 鸟枪换炮,利用python3对球员做大数据降维(因子分析得分),为C罗找到合格僚机
  9. Linux学习(一)初识Linux(适合萌懂阶段)
  10. 皮尔逊相关系数实现相似K线及其性能优化