xpose框架使用android studio
16lz
2021-12-04
写一个测试项目
package com.ijingyir.lier.testb;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.TextView;public class MainActivity extends AppCompatActivity { private Button btChange; private TextView tvText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btChange = (Button) findViewById(R.id.bt_change); tvText = (TextView) findViewById(R.id.tv_text); btChange.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v){ tvText.setText("天平"); } }); }}
建立无界面工程
main目录libs加入
api-82.jar
main目录新建assets目录在新建xposed_init文件
com.example.administrator.xposedtest.HookMain(填写入口文件)
添加provided files(‘libs/api-82.jar’)
provided 提供包但不会编译进程序,如果一下有一个是compile 把 api-82编译进去了,程序就会出现无法进入自定义handleLoadPackage的情况
dependencies { provided fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:25.2.0' testCompile 'junit:junit:4.12' provided files('libs/api-82.jar')}
java下写Main
package com.example.administrator.testxposed;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;import static de.robv.android.xposed.XposedHelpers.findAndHookMethod;/** * Created by Administrator on 2018/3/1. */public class Main implements IXposedHookLoadPackage { @Override public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable{ XposedBridge.log("handleLoadPackage执行了"); if(loadPackageParam.packageName.equals("com.ijingyir.lier.testb")){ XposedBridge.log("开始hook测试程序!"); findAndHookMethod(TextView.class,"setText",CharSequence.class, new XC_MethodHook(){ protected void beforeHookedMethod(MethodHookParam param) throws Throwable{ XposedBridge.log("处理setText方法前"); param.args[0] = "我是被Xposed修改的"; } protected void afterHookMethod(MethodHookParam param) throws Throwable{ XposedBridge.log("处理setText方法后"); } } ); } }}
还有file->setting里面有个 instanrun的选项要取消掉
更多相关文章
- Android(安卓)用手动组拼的方式生成xml
- Android(安卓)Testing Point
- Android的GLSurfaceView测试源码
- Android(安卓)源码编译问题集锦
- android怎么做单元调式
- android java 调用 .so 动态库实例
- Android多点触摸测试类
- Android使用ccache减少编译时间
- Android:Ping命令测试网络