sidstory
Lsposed模块开发、适配指南
作者:smice分类:Android
日期:2023-01-28 09:07:002023-01-28阅读:4185
传统的xposed框架已经停止在了安卓8.0时代,安卓8.0以后的类xposed框架几乎都是用的Edxposed(已停更,且bug较多)或lsposed+magisk。lsposed模块与传统xposed、edxposed不同,必须手动选择作用域。且lsposed是目前的主流框架,因此模块适配lsposed很有必要。
第一步:配置build.gradle
在app目录下的build.gradle的dependencies里加入:
compileOnly 'de.robv.android.xposed:api:82'
compileOnly 'de.robv.android.xposed:api:82:sources'
其实最新的api是89,但89是测试版本,用的最多的还是82版本。目前lsposed团队宣布开发新的api:libxposed,期待一波。
第二步:配置settings.gradle
在settings.gradle的repositories里加上:
maven { url 'https://maven.aliyun.com/repository/public/' }
第三步:修改AndroidManifest.xml
在AndroidManifest.xml的application标签内加上:
<meta-data
android:name="xposedmodule"
android:value="true" />
<meta-data
android:name="xposeddescription"
android:value="这里是模块描述" />
<meta-data
android:name="xposedminversion"
android:value="89" />
<meta-data
android:name="xposedscope"
android:resource="@array/scope" />
其中xposedmodule属性声明为true时声明是xposed模块,才能被lsposed及其衍生框架识别,xposedminversion为最低兼容的xposed框架api版本,xposedscope为模块作用域列表,填写后方便用户勾选作用域。
第四步:新建xposed_init
在src路径下创建assets目录,在该目录下新建xposed_init文件,以文本方式打开填入完整的hook类类名(包名+类名)。
第五步:编写hook类
新建hook类时注意要与xposed_init类中所填写的完整类名一致,否则xposed及其衍生框架找不到该hook类。
第六步:编写lsposed作用域列表
在res/values路径下新建array.xml,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="scope">
<item>com.test.app</item>
</string-array>
</resources>
其中item里填写要hook的目标应用的包名即可。
弹幕评论