前言

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插件开发入门详解相关推荐

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

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

  2. 最新的Xposed模块编写教程

    原标题:新手不要再被误导!这是一篇最新的Xposed模块编写教程 查看全文 http://www.taodudu.cc/news/show-5139296.html 相关文章: smartbi问题_S ...

  3. xposed模块编写教程_新手不要再被误导!这是一篇最新的Xposed模块编写教程

    在互联网上,关于Xposed模块编写的教程可谓是一抓一大把.但由于时间的推移,很多工具和方法都发生了变化(如Eclipse退出安卓编程舞台,AndroidStudio 不断升级导致其一些设置也随之变化 ...

  4. xposed模块编写教程_太极xposed模块使用教程

    今天给大家分享一下太极xposed模块使用教程.很多小伙伴说下载不到Xposed模块,这个网上其实很多,但是第三方的下载站就算了吧.我也是一个深受其害的网瘾少年,只要是下载站的软件,一不留心一次性电脑 ...

  5. xposed模块编写教程_最新的Xposed模块编写教程

    前言:最近看了很多的Xposed的入门教程,根据的我的实践,写此教程,希望对新手有所帮助. 1.编写一个被Hook的App.代码 1 packagecom.example.hookdemo;2 3 i ...

  6. virtualxposed使用教程_Xposed 插件开发入门教程(一)

    其实网上已经有很多 Xposed 插件开发的入门教程了,我写的这篇与其说是教程,不如说是参考,为了防止以后忘了开发步骤,这里就写篇博客记录一下. 要使用 Xposed 插件,首先要 root 手机并安 ...

  7. android xposed如何写,Xposed插件开发入门详解

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

  8. AndriodStudio 开发环境下实现Xposed模块开发入门。Xposed框架模块编写教程

    前言: Xposed框架是一款开源框架,其功能是可以在不修改APK的情况下影响程序运行(修改系统)的框架服务,基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运作.Xposed 就好比是 ...

  9. Xposed模块开发教程整理

    Xposed模块开发教程 Xposed官网 Xposed官方文档 Xposed框架介绍 了解和使用Android神器Xposed框架 Xposed模块开发 Xposed模块开发入门 在手机状态栏增加显 ...

最新文章

  1. live555从RTSP服务器读取数据到使用接收到的数据流程分析
  2. mysql odbc 配置详解
  3. 垃圾回收器的基本原理是什么?
  4. 使用Subversion进行版本控制 附录A
  5. 远程连接MySql数据库
  6. HH SaaS电商系统的入库功能模块设计
  7. 令人拍案叫绝的EfficientNet和EfficientDet
  8. 设计师找灵感?集设用作品打动世界的窗口
  9. 弱引用WeakReference
  10. 【stata】一些关于数据处理的基础知识(备查代码)
  11. Hexo博客搭建以及主题使用
  12. 年底了,诈骗的怎么这么多?
  13. 通过className属性给一个元素追加新class(addClass函数)
  14. view-ui中select全选实现
  15. 合肥辰工科技有限公司
  16. nodejs-指定长度断句
  17. AI智能抠图工具--头发丝都可见
  18. php扇形分布图,php绘制一个扇形的方法
  19. [MRCTF2020]套娃
  20. 数据库表可以没有主键吗?

热门文章

  1. 导数的四则运算法则_高中生如何学习导数
  2. 个人日记——用来激励自己
  3. 今天看完了《勇敢的心》非常感动,收集了些资料!希望大家喜欢。
  4. 顶尖文案app_17个文案网站 5款短视频软件,自媒体人必备,直接拿走不谢
  5. chrome浏览器不能显示本地图片办法解决(图片预览)
  6. 墨画子卿第四章第6节:卷轴
  7. 学术英语理工(第二版)Unit1课文翻译
  8. 关于sim/usim的一些概念
  9. 计算机输入设备的作用,认识计算机输入设备—键盘
  10. 套头文件html重复,关于C++头文件重复包含的问题