Xposed源码编译
该实现需要基于Xposed源码编译, 不会源码编译的建议先研究下如何编译, 推荐下面的文章
https://www.jianshu.com/p/73e01e7b1bd8
https://www.jianshu.com/p/c14eafe5e1d7
https://www.jianshu.com/p/c731cd44e82b
XposedBridge包名修改
- 直接修改整个包名路径, 原路径为app/src/main/java/de/robv/android/xposed, 将包名部分修改为其他, 如app/src/main/java/com/xped/api
- 替换XposedBridge源码中包名引用, 全局替换de.robv.android.xposed 为 com.xped.api(注意: XposedInit.INSTALLER_PACKAGE_NAME 这个千万不要替换掉了, 这个是XposedInstaller的包名)
Xposed Framework部分修改(frameworks/base/cmds/xposed)
其实在这个目录下使用搜索关键字就可以知道要修改什么地方了(grep ‘robv’ -r ./)
搜索到一下内容替换包名就可以了
- aosp/frameworks/base/cmds/xposed/xposed.h
efine XPOSED_CLASS_DOTS_ZYGOTE
efine XPOSED_CLASS_DOTS_TOOLS - aosp/frameworks/base/cmds/xposed/libposed_common.h
efine CLASS_XPOSED_BRIDGE
efine CLASS_ZYGOTE_SERVICE
efine CLASS_FILE_RESULT - aosp/frameworks/base/cmds/xposed/xposed_service.cpp
IMPLEMENT_META_INTERFACE(XposedService, “”)
编译源码并刷入手机
将编译完成后的xposed-vxx-sdkxx-xxx-xxx.zip刷入手机, 将XposedBridge.jar中的dex文件转换成jar包放入自己的模块中就可以了
弊端
因为替换了包名, 所以只能使用自己的模块, 其他第三方的模块就无法正常使用了, 搞机有风险, 修改需谨慎哦~