1、申 请 I D:tinyzimu
2、个人邮箱:lixin1226@163.com
3、原创技术文章:
xposed框架入门
Xposed框架是一款修改系统框架服务的软件,通过它的媒介许多功能强大的模块得以运行,且不冲突地同时运作,自从Xposed框架发布以来,安卓手机的可玩性日益激增。今天就来给大家讲解一下Xposed框架入门教程。
一、安装Xposed框架 首先准备工作
1.已经获得ROOT权限的手机 2.安卓版本高于4.0.3 3.下载Xposed框架
然后步骤如下列图片:
二、编写基于Xposed框架的App 1.建立一个android工程, 3.配置AndroidManifest.xml,在Application标签添加如下属性 <meta-data
android:name="xposedmodule"
android:value="true" />
<meta-data
android:name="xposeddescription"
android:value="Easy example which makes the status bar clock red and adds a smiley" />
<meta-data
android:name="xposedminversion"
android:value="30" /> 其中<meta-data
android:name="xposedmodule"
android:value="true" /> 是固定的,用于标识是xposed插件,这样安装后xposed installer就会识别并加载; <meta-data
android:name="xposeddescription"
android:value="Easy example which makes the status bar clock red and adds a smiley" />
<meta-data 是用于在xposed installer插件列表里显示的标题和描述信息的额,这个可以自定义; meta-data
android:name="xposedminversion"
android:value="30" />
这个标识jar包的版本号,就是导入SDK 开发包的版本号, 其他的就没什么要特别配置的了。 4.在工程的assets文件夹新建一个名为xposed-init的文件,内容是入口类的全路径类名(包名+类名),类名是de.robv.android.xposed.examples.redclock.RedClock,标识是插件的入口类。 编写入口类,其中入口类要实现IXposedHookLoadPackage接口,并重写handleLoadPackage方法,便表示每当有一个APP被加载时就回调这个接口,这里我们可以 处理我们感兴趣的APP,是以包名为标识,比如DEMO里监听的是"com.android.systemui"包,对应的API就是系统应用SystenUi.apk专门显示系统UI的,比如状态栏, 以下DEMO的代码 package de.robv.android.xposed.examples.redclock;
import static de.robv.android.xposed.XposedHelpers.findAndHookMethod;
import android.graphics.Color;
import android.util.Log;
import android.widget.TextView;
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam;
public class RedClock implements IXposedHookLoadPackage {
public void handleLoadPackage(LoadPackageParam lpparam) throws Throwable {
Log.v("packageName", lpparam.packageName);
if (!lpparam.packageName.equals("com.android.systemui"))
return;
findAndHookMethod("com.android.systemui.statusbar.policy.Clock", lpparam.classLoader, "updateClock", new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
TextView tv = (TextView) param.thisObject;
String text = tv.getText().toString();
tv.setText(text + " :)");
tv.setTextColor(Color.RED);
Log.v("redcolock","redcolock");
}
});
//XposedHelpers.getObjectField(obj, "a");
}
} 官方DEMO的效果(下图)就是修改状态栏的时间为红色并且加了:)。
|