返回列表 发新帖

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

  [复制链接]

21

主题

2019

回帖

8593

积分

硕士生

Rank: 6Rank: 6

金币
498
好评
280
信誉
108

MT论坛元老MT论坛荣誉管理MT论坛帅哥考神MT论坛活跃会员MT论坛最佳新人MT论坛侠客MT论坛新人

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

前两天我分享了一个我所使用的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
已有11人评分好评 金币 理由
汝甚叼 + 1
强强yqq + 1
御景 + 1 + 1 很给力!
dayeve + 1 + 1
佛说我很笨 + 1 + 1 教程非常棒!
柒晨 + 1
偶尔.c + 1 好评
郭友人 + 1 + 1 赞一个!
小小虾 + 1
南山楠 + 1 + 1
kemomimi酱 + 1 + 1 很给力!

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

回复

使用道具 举报

103

主题

5924

回帖

2万

积分

博士后

Rank: 8Rank: 8

金币
1011
好评
255
信誉
121

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

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

抢个沙发
回复

使用道具 举报

21

主题

2019

回帖

8593

积分

硕士生

Rank: 6Rank: 6

金币
498
好评
280
信誉
108

MT论坛元老MT论坛荣誉管理MT论坛帅哥考神MT论坛活跃会员MT论坛最佳新人MT论坛侠客MT论坛新人

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

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

使用道具 举报

0

主题

916

回帖

3103

积分

大学生

Rank: 5Rank: 5

金币
2855
好评
0
信誉
100

考神MT论坛新人

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

使用道具 举报

165

主题

5613

回帖

1万

积分

博士生

嘻嘻●‿●

Rank: 7Rank: 7Rank: 7

金币
168
好评
167
信誉
105

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

发表于 2021-5-11 11:59:02 来自手机  | 显示全部楼层  来自 广东
就不能脱离xp激活吗?
回复

使用道具 举报

36

主题

1886

回帖

6988

积分

硕士生

Rank: 6Rank: 6

金币
3346
好评
8
信誉
90
发表于 2021-5-11 12:01:27 来自手机  | 显示全部楼层  来自 广东
前排围观大佬操作
回复

使用道具 举报

68

主题

3198

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
4760
好评
31
信誉
101

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

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

使用道具 举报

428

主题

6604

回帖

2万

积分

博士后

Rank: 8Rank: 8

金币
5318
好评
44
信誉
185

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

发表于 2021-5-11 12:07:48 来自手机  | 显示全部楼层  来自 上海
厉害厉害
回复

使用道具 举报

0

主题

3206

回帖

8264

积分

硕士生

Rank: 6Rank: 6

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

使用道具 举报

21

主题

2019

回帖

8593

积分

硕士生

Rank: 6Rank: 6

金币
498
好评
280
信誉
108

MT论坛元老MT论坛荣誉管理MT论坛帅哥考神MT论坛活跃会员MT论坛最佳新人MT论坛侠客MT论坛新人

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

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

使用道具 举报

11

主题

3281

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
1994
好评
2
信誉
101
发表于 2021-5-11 12:43:35 来自手机  | 显示全部楼层  来自 江苏
感谢楼主
回复

使用道具 举报

46

主题

5615

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
6216
好评
200
信誉
280

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

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

使用道具 举报

46

主题

5615

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
6216
好评
200
信誉
280

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

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

使用道具 举报

3

主题

3028

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
3331
好评
7
信誉
100

MT论坛最佳新人考神

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

使用道具 举报

4

主题

913

回帖

5111

积分

硕士生

Rank: 6Rank: 6

金币
2216
好评
0
信誉
77
发表于 2021-5-11 13:25:39 来自手机  | 显示全部楼层  来自 广东
回复

使用道具 举报

发表回复

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

本版积分规则

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