• 欢迎光临~

xposed安装和使用入门

开发技术 开发技术 2022-12-29 次浏览

因为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/' }

xposed安装和使用入门

然后sync now后就会下载对应的xposed的jar包.

xposed安装和使用入门

但是我在导入的时候遇见个问题, 就是无法导入和使用xpoesd jar包中的任何类. 具体原因还不清楚.

xposed安装和使用入门

  • 直接导入XposedBridgeApi-82.jar

还有一种办法就是直接下载对应的jar包并导入使用, 下载的jar包放入lib目录中, 右键jar包选择Add As Library.

xposed安装和使用入门

这样android studio会自动在build.gradle中添加implementation files('libs\XposedBridgeApi-82.jar') , 这会使apk在编译时将jar包一起打包。因为xposed已经包含了对应的jar包, 所以在加载此xposed apk模块时会出现重复导入jar包并出错: Cannot load module。需要将implementation换成compileOnly,意思是仅在编译时有效不进行打包。

xposed安装和使用入门

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的包名。

xposed安装和使用入门

build后安装到手机上就可以在lsposed中看到这个xposed模块。
xposed安装和使用入门

对指定apk启动此模块

xposed安装和使用入门

重启apk后发现此xposed模块已经成功加载,日志也已经成功打印。

xposed安装和使用入门

程序员灯塔
转载请注明原文链接:xposed安装和使用入门
喜欢 (0)