概述
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