|
|
本帖最后由 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代码,这里就不放图了
- //参数一是要Hook的类
- //参数二是要Hook的方法
- //参数三是回调,即上面写的匿名内部类ChangeText
- XposedBridge.hookAllMethods(TextView.class,"setText",new ChangeText());
-
复制代码
Q : 为什么要Hook的类是TextView.class?
A : 因为android中的大部分设置内容的方法是TextView中的setText方法,所以要hook的方法是setText。
然后我们继续在刚写的匿名内部类ChangeText中的beforeHookedMethod内,
super.beforeHookedMethod(param);后面写入以下代码:
如图:
它的意思就是把参数一的内容更改为:卧槽
这样就完成了hook代码的编写。
然后右上角编译-
安装-
激活Xposed模板-
未激活状态:

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

最后,给大家放出需要用到的android.jar和源码供大家参考,回复可见内容。
点击下载,解压密码:XuanRan
别忘了给个好评!
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
-
查看全部评分
总评分:好评 +10
金币 +7
|