返回列表 发新帖

【开发基础】利用AIDE开发第一个Xposed模块

  [复制链接]

22

主题

1791

帖子

7696

积分

超级版主

Rank: 8Rank: 8

金币
3624
好评
262
贡献
8

MT论坛帅哥考神MT论坛活跃会员MT论坛最佳新人MT论坛侠客MT论坛新人

发表于 2021-5-11 11:52:47 来自手机  | 显示全部楼层 | 阅读模式
本帖最后由 XuanRan 于 2021-6-11 19:17 编辑

前两天我分享了一个我所使用的AIDE(传送门)

今天我们就教大家利用这个AIDE开发第一个Xposed模块(面相0基础)来做一个能让文字全改成 卧槽 的模块。

这里建议大家使用我分享的那个版本,不仅有一些实用的高级功能,还内置了Xposed模板,最重要的是,本节课的内容会使用到这个模板

但如果你对开发有一定的了解,可以略过。

OK,教程开始

---------分-------隔--------线--------

打开AIDE,选择新建 Xposed App



输入app name和包名,但包名要记好,等会需要用。




确定之后会出现很多错误,如下图所示。




Q : 为什么会出现这些错误?是不是你分享的版本问题。

A : 其实并不是,出现这些错误只是没有导入Xposed的api,只有导入了才能正常进行模块开发。

Q : 那该如何导入?

A : 导入api有很多种方法,最常见的方法就是在项目的app目录下的build.gradle文件中导入,但是由于Xp模块的特殊性,即模块中不能包含Xposed的api,因为在有Xposed环境的系统中已经存在了这些api,(如何理解?就像安卓的代码一样,apk内不需要包含android的代码,因为android系统已经内置),但是如果没有api我们的模块将无法通过编译器编译。

Q : 那该如何解决?

A : 最常见的方法就是在导入api时,用compileonly 修饰,这个是代表仅提供编译时依赖,但是AIDE又不支持此修饰符,所以我们需要一个方法--------导入jar。


Q : 导入jar又是什么?

A : 导入jar可理解成导入android api,我已经把xposed的api放到文末隐藏内容中,解压后进行以下操作:


下载之后打开AIDE的设置-
选择 构建 & 运行 -
选择  android.jar -
然后 把你下载好的jar路径粘贴 -
确定 -
重启AIDE -


这样,后续创建就不会出现类似问题。


接下来我们需要指定Xposed的加载类,打开工程目录下的assets文件夹下的xposed_init文件,将.Main之前的内容改为你创建应用的包名,如图所示。




继续,我们打开AndroidManifest.xml文件,可以看到模板自动为我们添加了meta标签,更改meta标签内容,即可更改模块在Xposed中显示的内容。



然后我们项目基本就已经创建完成了,可以开始写代码了。

打开工程目录下的Main文件,这个文件是Xposed的初始类,我们在这个类写我们的Hook代码。

可以看到图中红色字体的com.XuanRan.FirstXp

这是我所创建模块的包名,在这里把它改成你要Hook应用的包名,以避免hook到其他应用,也就是说当正在加载的软件包名是com.XuanRan.FirstXp才执行hook代码。

这里请额外注意不要写错或者不写,前者会导致没有效果,后者会导致手机上的所有字都改变。


同时把Class<?> xxx这行删除,这是创建模板默认生成的,我们现在用不到。




然后再在此文件最后一行写一个内部类让它继承XC_MethodHook,这是因为AIDE并不像Android Studio那么智能,自动帮我们生成匿名内部类,我们重写下,然后再在里面重写beforeHookedMethod方法(只需在内部类里面打个before即可看到代码提示)




然后在17行,写入hook代码,这里就不放图了



  1. //参数一是要Hook的类
  2. //参数二是要Hook的方法
  3. //参数三是回调,即上面写的匿名内部类ChangeText

  4. XposedBridge.hookAllMethods(TextView.class,"setText",new ChangeText());
  5.                        

复制代码


Q : 为什么要Hook的类是TextView.class?

A : 因为android中的大部分设置内容的方法是TextView中的setText方法,所以要hook的方法是setText。


然后我们继续在刚写的匿名内部类ChangeText中的beforeHookedMethod内,
super.beforeHookedMethod(param);后面写入以下代码:



  1. param.args[0] = "卧槽";
复制代码


如图:



它的意思就是把参数一的内容更改为:卧槽

这样就完成了hook代码的编写。


然后右上角编译-
安装-
激活Xposed模板-


未激活状态:



激活之后即可看到正常运行,如图所示:




最后,给大家放出需要用到的android.jar和源码供大家参考,回复可见内容。

点击下载,解压密码:XuanRan

别忘了给个好评!


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
已有7人评分好评 金币 理由
佛说我很笨 + 1 + 1 教程非常棒!
柒晨 + 1
偶尔.c + 1 好评
郭友人 + 1 + 1 赞一个!
小小虾 + 1
南山楠 + 1 + 1
押尾猫 + 1 + 1 很给力!

查看全部评分 总评分:好评 +7  金币 +4 

如果对禁言、屏蔽、警告等操作有异议
可私信我或发邮件到
XuanRanDev@qq.com申请复审。
回复

使用道具 举报

86

主题

4297

帖子

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
4785
好评
226
贡献
1

MT论坛最佳新人MT论坛帅哥考神MT论坛活跃会员MT论坛侠客

发表于 2021-5-11 11:53:17 来自手机  | 显示全部楼层
本帖最后由 XuanRan 于 2021-5-11 12:00 编辑

抢个沙发
回复

使用道具 举报

22

主题

1791

帖子

7696

积分

超级版主

Rank: 8Rank: 8

金币
3624
好评
262
贡献
8

MT论坛帅哥考神MT论坛活跃会员MT论坛最佳新人MT论坛侠客MT论坛新人

发表于 2021-5-11 11:55:09 来自手机  | 显示全部楼层
本帖最后由 XuanRan 于 2021-5-11 12:10 编辑

完完全全的面相小白,不然写不了这么多,也是为以后的教程奠定一个基础。
回复

使用道具 举报

0

主题

254

帖子

851

积分

高中生

Rank: 4

金币
637
好评
0
贡献
0

考神MT论坛新人

发表于 2021-5-11 11:57:04 来自手机  | 显示全部楼层
感谢分享
回复

使用道具 举报

67

主题

1101

帖子

3384

积分

禁止发言

清隍

金币
9
好评
75
贡献
1

考神MT论坛帅哥MT论坛最佳新人MT论坛活跃会员MT论坛侠客

发表于 2021-5-11 11:59:02 来自手机  | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

23

主题

1105

帖子

3957

积分

大学生

Rank: 5Rank: 5

金币
1606
好评
3
贡献
0
发表于 2021-5-11 12:01:27 来自手机  | 显示全部楼层
前排围观大佬操作
回复

使用道具 举报

45

主题

1258

帖子

4093

积分

大学生

Rank: 5Rank: 5

金币
418
好评
9
贡献
0

考神MT论坛帅哥

发表于 2021-5-11 12:01:56 来自手机  | 显示全部楼层
前排围观。
回复

使用道具 举报

168

主题

2188

帖子

6541

积分

硕士生

Rank: 6Rank: 6

金币
1138
好评
13
贡献
0

考神MT论坛帅哥MT论坛活跃会员MT论坛最佳新人MT论坛灌水老大MT论坛新人

发表于 2021-5-11 12:07:48 来自手机  | 显示全部楼层
厉害厉害
一样魔前千古间,独看桑蝶化人间.
一叹求魔千万年,几多轮回古葬边.
回复

使用道具 举报

0

主题

272

帖子

806

积分

高中生

Rank: 4

金币
311
好评
0
贡献
0
发表于 2021-5-11 12:09:53 来自手机  | 显示全部楼层
学习了,谢谢分享
回复

使用道具 举报

22

主题

1791

帖子

7696

积分

超级版主

Rank: 8Rank: 8

金币
3624
好评
262
贡献
8

MT论坛帅哥考神MT论坛活跃会员MT论坛最佳新人MT论坛侠客MT论坛新人

发表于 2021-5-11 12:14:19 来自手机  | 显示全部楼层
【清隍】 发表于 2021-5-11 11:59
就不能脱离xp激活吗?

以后再写一个吧,这个是面向小白入门的,太复杂了也不好理解
回复

使用道具 举报

11

主题

2511

帖子

7127

积分

硕士生

Rank: 6Rank: 6

金币
803
好评
1
贡献
0
发表于 2021-5-11 12:43:35 来自手机  | 显示全部楼层
感谢楼主
回复

使用道具 举报

24

主题

1562

帖子

3756

积分

大学生

Rank: 5Rank: 5

金币
958
好评
2
贡献
0

MT论坛最佳新人考神MT论坛帅哥

发表于 2021-5-11 12:44:24 来自手机  | 显示全部楼层
感谢(❁´ω`❁)精品
回复

使用道具 举报

24

主题

1562

帖子

3756

积分

大学生

Rank: 5Rank: 5

金币
958
好评
2
贡献
0

MT论坛最佳新人考神MT论坛帅哥

发表于 2021-5-11 12:49:12 来自手机  | 显示全部楼层
行(●°u°●)​ 」
回复

使用道具 举报

3

主题

1592

帖子

7182

积分

硕士生

Rank: 6Rank: 6

金币
2362
好评
7
贡献
0

MT论坛最佳新人考神

发表于 2021-5-11 12:49:41 来自手机  | 显示全部楼层
看看隐藏
回复

使用道具 举报

3

主题

150

帖子

1011

积分

高中生

Rank: 4

金币
157
好评
0
贡献
0
发表于 2021-5-11 13:25:39 来自手机  | 显示全部楼层
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表