Xposed框架
LSPosed/LSPosed: LSPosed Framework
Home · LSPosed/LSPosed Wiki
该框架是一个magisk模块,是一个目前还在更新的xposed框架,支持模块热加载,不必重启,使用起来比较方便。并且正在更新xposed api(截止到文章发布2024年5月份还没有讲api稳定版发布到maven)。
现在LSPosed已经光荣退出历史舞台了,取而代之的是vector。
模块建立
1、新建一个android项目,空项目即可
2、找到项目的settings.gradle,在pluginManagement–repositories和dependencyResolutionManagement–repositories下添加maven { url "https://api.xposed.info/" },添加xposed的存储库3
或者使用阿里云的镜像
maven { url 'https://maven.aliyun.com/repository/public/' }
3、找到模块的build.gradle,在dependencies下添加依赖compileOnly 'de.robv.android.xposed:api:82'
- 82为目前的最新版本,后续停止更新。目前LSPosed正在更新新的api,Develop Xposed Modules Using Modern Xposed API · LSPosed/LSPosed Wiki,尚未发布正式稳定版本
- 应当使用compileOnly方式添加依赖,不能讲依赖打包编译进模块,否则可能会导致模块无法被加载
4、在manifest的application标签下,添加如下字段
<!--是一个xposed模块-->
<meta-data
android:name="xposedmodule"
android:value="true" />
<!--xposed模块的描述-->
<meta-data
android:name="xposeddescription"
android:value="" />
<!--框架的最小api版本-->
<meta-data
android:name="xposedminversion"
android:value="82" />
<!--lsposed中添加的元数据。表现在管理器中为推荐应用,即模块推荐勾选的hook应用,免去寻找目标应用的麻烦-->
<meta-data
android:name="xposedscope"
android:value="com.wahoofitness.boltcompanion" />
如果需要添加多个推荐应用,有两种编写方式
方式1:
<meta-data
android:name="xposedscope"
android:resource="@array/example_scope" />
然后添加array.xml文件
<string-array name="example_scope" >
<item>com.example.a</item>
<item>com.example.b</item>
</string-array>
方式2:
硬编码写入xml,用;分隔
<meta-data
android:name="xposedscope"
android:value="com.example.a;com.example.b" />
5、在项目中添加assets资源文件目录,在其中新建名为xposed_init的文件,文件中xposed的hook类,如com.example.HookClass
6、创建上述文件中写入的类,并继承IXposedHookLoadPackage,重写handleLoadPackage方法,在方法中编写hook的业务逻辑
7、如果打印了日志,不要试图在模块中寻找日志,因为hook代码是在目标应用中执行的,所以应该寻找目标应用打印的日志
8、如果lpparam.packageName.equals("com.xxx")为false,改为com.xxx.equals(lpparam.packageName)可能会成功



