Xposed Xposed插件开发

Xposed插件开发

简单介绍
Xposed,大名鼎鼎得Xposed,是Android平台上最负盛名的一个框架。在这个框架下,我们可以加载很多插件App,这些插件App可以直接或间接操纵系统层面的东西,比如操纵一些本来只对系统厂商才open的功能(实际上是因为Android系统很多API是不公开的,而第三方APP又没有权限)。有了Xposed后,理论上我们的插件APP可以hook到系统任意一个Java进程。

开发准备
编译器我最初用AndroidStudio+Gradle环境发现不行,后来想了一下,应该是不能用Gradle环境的。于是就用IDEA+MAVEN创建工程,然后再导入AndroidStudio编译的。
首先要给测试机root+刷rec|twrp+安装XposedInstaller,然后用XposedInstaller下载卡刷Xopsed框架卡刷包,然后在rec中刷进去。第一次开机会有点久,安装成功之后测试机就准备好了。
然后是jar包:百度搜,下载XposedBridgeApi-54.jar,在工程目录新建lib文件夹,把下载的jar包放进去。然后右键工程-OpenModuleSetting 把lib以addjar文件夹的形式加入进来。注:不可用工程默认的libs目录,一定要自己创建lib目录使用。
接下来是AndroidManifest.xml
在application中添加:

<meta-data
            android:name="xposedmodule"
            android:value="true" />
        <meta-data
            android:name="xposeddescription"
            android:value="介绍" />
        <meta-data
            android:name="xposedminversion"
            android:value="56" />

创建xposed类,来写代码吧

import android.telephony.TelephonyManager;

import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XSharedPreferences;
import de.robv.android.xposed.callbacks.XC_LoadPackage;

import static de.robv.android.xposed.XposedHelpers.findAndHookMethod;

/**
 * Created by zhaoyong on 2016/5/14.
 */
public class XposedTest implements IXposedHookLoadPackage {

    /* (non-Javadoc)
     * @see de.robv.android.xposed.IXposedHookLoadPackage#handleLoadPackage(de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam)
     */

    public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable {
        hookPhoneinfo(loadPackageParam);
    }

    private void hookPhoneinfo(final XC_LoadPackage.LoadPackageParam lpparam) {

        //getDeviceId
        findAndHookMethod(TelephonyManager.class.getName(), //包名类名
        lpparam.classLoader, //不用管 这样写就好
        "getDeviceId", //方法名
        new XC_MethodHook() {
            @Override
            protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                //在该方法执行前调用
            }

            @Override
            protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                super.afterHookedMethod(param);
                //在该方法执行之后调用
                //给改方法自定义返回值
                param.setResult("自定义返回值");
            }
        });
    }

}

接下来创建assets目录,创建文件xopsed_init,以本文文档的形式创建,不要加.txt后缀,里面写

com.xxx.xxx.xxx.XposedTest

完成的包名类名路径

完成,运行安装,激活,重启搞定。
关于如何保存自定义配置,看我的另一个Xposed保存SP的文章。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值