因为xposed已经停止更新,高版本的android可以使用他的改良版lsposed,开发环境和xposed一致, 首先需要安装magisk + zygisk + lsposed.
xposed开发环境
导入xposed模块开发使用的jar包
- 通过设置jcenter (未成功)
设置app的build.gradle, 在dependencies里加上
dependencies {
//低版本使用provided, 但是不能使用implementation
compileOnly 'de.robv.android.xposed:api:82'
compileOnly 'de.robv.android.xposed:api:82:sources'
}
在setting.gradle中添加(低版本的gradle是在build.gradle中添加)jcenter()
或者maven { url 'https://maven.aliyun.com/repository/public/' }
然后sync now后就会下载对应的xposed的jar包.
但是我在导入的时候遇见个问题, 就是无法导入和使用xpoesd jar包中的任何类. 具体原因还不清楚.
- 直接导入XposedBridgeApi-82.jar
还有一种办法就是直接下载对应的jar包并导入使用, 下载的jar包放入lib目录中, 右键jar包选择Add As Library.
这样android studio会自动在build.gradle中添加implementation files('libs\\XposedBridgeApi-82.jar')
, 这会使apk在编译时将jar包一起打包。因为xposed已经包含了对应的jar包, 所以在加载此xposed apk模块时会出现重复导入jar包并出错: Cannot load module
。需要将implementation换成compileOnly,意思是仅在编译时有效不进行打包。
AndroidManifest.xml添加必要信息
//告诉xposed框架这是一个xposed模块
<meta-data
android:name="xposedmodule"
android:value="true" />
//给模块添加描述信息
<meta-data
android:name="xposeddescription"
android:value="这是一个xposed demo" />
//支持的最低的xposed版本
<meta-data
android:name="xposedminversion"
android:value="53" />
编写hook类
添加一个java类,此类实现IXposedHookLoadPackage接口并编写handleLoadPackage函数。handleLoadPackage回调函数会在apk加载时由xposed的在XposedInit函数调用,这里简单实现了打印当前加载apk的包名。
build后安装到手机上就可以在lsposed中看到这个xposed模块。
对指定apk启动此模块
重启apk后发现此xposed模块已经成功加载,日志也已经成功打印。
标签:入门,xposed,jar,gradle,apk,导入,模块,安装 From: https://www.cnblogs.com/revercc/p/17011584.html