自从用了AS2.0之后就很久没有用到eclipse了(我主要用E做Android开发),今天准备写个小测试项目刚好发现电脑上还装有eclipse,于是还是用eclipse来做,因为小项目开发用eclipse还是很快的,创建项目也不需要下载一大夫组件,库啥的,点了finish马上就可以coding了。
使用Xposed模块需要两个条件:
1.手机必须root (Xposed需要往/system里写入东西)root成功主界面会显示框架86版已激活
2.安装Xposed Installer
创建Xposed项目
1.在eclipse中新建一个普通的Android 项目,activity选择为空(xposed不需要界面支持),SDK我用的是最低22,编译23
<uses-sdk android:minSdkVersion="22" android:targetSdkVersion="23" />
2.加入Xposed模块。
1)AndroidManifest.xml
需在Application Node中添加三个Meta(xposedmodule,xposedminversion和xposeddescription)
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.lee.xposedtest" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="22" android:targetSdkVersion="23" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <meta-data android:name="xposedmodule" android:value="true" /> <meta-data android:name="xposeddescription" android:value="测试服务端" /> <meta-data android:name="xposedminversion" android:value="54" /> </application> </manifest>
2)导入XposedBridge.jar.
下载XposedBridgeApi-(版本号).jar,放到工程下的lib目录下(需要新建lib文件夹,注意是lib,不是libs),之后添加到Build Path中(Build Path->Add to Build Path).
3).声明加载入口
在工程目录下的assets目录下新建一个xposed_init文件,这个文件声明了需要加载的XposedInstaller入口类
例如我的工程包名为com.example.xposedtest,实现hook的类名为XposedTest,那么在xpose_init中添加如下:
com.example.xposedtest.XposedTest
OK,配置完成后就开始Coding了,这里引用网上一个"Hook状态栏显示时间"的Demo,代码如下
package com.lee.xposedtest; import static de.robv.android.xposed.XposedHelpers.findAndHookMethod; import android.graphics.Color; import android.widget.TextView; import de.robv.android.xposed.IXposedHookLoadPackage; import de.robv.android.xposed.XC_MethodHook; import de.robv.android.xposed.XposedBridge; import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam; public class Main implements IXposedHookLoadPackage { // 实现IXposedHookLoadPackage接口 public void handleLoadPackage(final LoadPackageParam lpparam) throws Throwable { XposedBridge.log("Main handleLoadPackage"); // 判断Hook的包是否正确 if (!lpparam.packageName.equals("com.android.systemui")) { XposedBridge.log("not found package"); return; } // 找到要Hook的类名和函数,创建自己的类 findAndHookMethod("com.android.systemui.statusbar.policy.Clock", lpparam.classLoader, "updateClock", new XC_MethodHook() { @Override protected void beforeHookedMethod(MethodHookParam param) throws Throwable { // 这里的调用在正常函数调用之前执行,由于本例是Hook时间显示,需要在显示之后调用,所以省略 } @Override protected void afterHookedMethod(MethodHookParam param) throws Throwable { // 这里的调用在正常函数调用之后执行 XposedBridge.log("XPose" + lpparam.packageName); TextView tv = (TextView) param.thisObject; String text = tv.getText().toString(); tv.setText(text + ":)"); tv.setTextColor(Color.RED); } }); } }
完成代码后编译项目,生成apk安装到手机。
注意:到这里还不能完全实现Hook,还需要在手机上运行之前安装的XposedInstaller,在“Module(模块)”选项中激活要Hook的apk,然后重启手机。
框架在下面附件下载,XP框架是必须的,XposedBridgeAPI-89.jar 是eclipse必须要加的,XposeDemo.7z 是Android Studio工程,不需要用到XposedBridgeAPI-89.jar,gradle会自己在jcenter中下载。
- 文章2300
- 用户1336
- 访客10859617
真正的成功是激励他人行动。
语法错误: 意外的令牌“标识符”
全面理解Gradle - 定义Task
Motrix全能下载工具 (支持 BT / 磁力链 / 百度网盘)
谷歌Pixel正在开始起飞?
获取ElementUI Table排序后的数据
Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is
亲测!虚拟机VirtualBox安装MAC OS 10.12图文教程
华为手机app闪退重启界面清空log日志问题
android ndk开发之asm/page.h: not found
手机屏幕碎了怎么备份操作?
免ROOT实现模拟点击任意位置
新手必看修改DSDT教程
thinkpad t470p装黑苹果系统10.13.2