概述
Riru + EdXposed是目前Android P及以上的一种Xposed解决方案。
Riru通过替换libmemtrack.so(会被Zygote加载的一个共享库)从而实现Zygote注入。
本文记录了笔者编译Riru模块的过程。
配置
电脑:安卓NDK
手机:Magisk 19.3,Riru-Core
步骤
克隆文件到本地
1 | git clone https://github.com/RikkaApps/Riru |
重命名模块
修改riru-module-template/jni/main/Android.mk中的LOCAL_MODULE,把template替换成自己的模块名
打开riru-module-template/build.gradle,定位到def moduleID = ,修改为自己的模块名def moduleName = 后的内容也可以修改
编写测试代码
打开riru-module-template/jni/main/main.cpp
首先导入头文件,并定义宏
1 |
在nativeForkAndSpecializePre中加一句log
1 | LOGD("nativeForkAndSpecializePre Success"); |
修改bulid.gradle文件
在Windows下,文件路径使用的是\,而gradle只认/,所以需要替换ndk-build的参数
定位到buildNativeRelease,在"NDK_LIBS_OUT=$libPathRelease"后加上.replace("\\", "/")
最终变成:
1 | commandLine 'cmd', '/c', 'ndk-build.cmd', |
PS:需要事先添加NDK到环境变量中,也可在此处手动指定NDK路径
替换magisk module模板
修改template_override下文件,使用EDXposed的模板替换(.prop文件不替换)
编译
在模块文件夹下进行编译
直接编译报错,需要在bulid.gradle文件apply plugin: 'com.android.library'后添加
1 | buildscript { |
其中gradle版本,android SDK版本可参考已有项目进行修改
然后执行以下命令编译并打包成Magisk模块(位于release文件夹下)
1 | gradlew.bat assembleMagiskRelease |
在项目文件夹下进行编译(未测试)
1 | gradlew.bat :riru-your-module:assembleMagiskRelease |
riru-your-module替换成自己模块名
刷入测试
如果出现问题,可使用adb shellsu命令或进入recovery模式,进入/data/adb/modules文件夹删除模块并重启
参考
使用Riru修改手游
Android Studio导入工程报错 Plugin with id ‘com.android.application’ not found