1.在已经root的手机上安装xposed installer.apk
2.打开android studio 新建工程 如果不需要界面的 可以选择Add no activity
3.新建完成后,找到 app 目录下的 build.gradle 文件,将 dependencies 中的

compile fileTree(dir: 'libs', include: ['*.jar'])

改为

provided fileTree(dir: 'libs', include: ['*.jar'])

4.下载 XposedBridgeApi-54.jar 并放入app目录下的libs文件夹.
5.在 AndroidManifest.xml 文件的 application 中添加如下代码,其中的54是前面下载的文件中的号码.

<meta-dataandroid:name="xposedmodule"android:value="true" />
<meta-dataandroid:name="xposeddescription"android:value="kiya's test module" />
<meta-dataandroid:name="xposedminversion"android:value="54" />

6.新建一个 XposedModule 类,写入:

package com.lonelykin.xposedhelper;import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XSharedPreferences;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage;import static de.robv.android.xposed.XposedHelpers.*;public class XposedModule implements IXposedHookLoadPackage
{@Overridepublic void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable{if (android.os.Process.myUid() <= 10000){XposedBridge.log("系统应用" + loadPackageParam.packageName + android.os.Process.myUid());return;}else{XposedBridge.log("普通应用" + loadPackageParam.packageName + android.os.Process.myUid());}}
}    

7.新建 assets 文件夹,在里面新建文件名为 xposed_init ,写入刚刚的类名,此处应为 com.lonelykin.xposedhelper.XposedModule

这时就可以编译安装了.
8.安装后 在xposed installer中的模块中 勾选刚刚装的插件 然后重启设备,等重新启动后可以在
日志中查看 是否调用成功

9.xposed怎样工作?
开机时, ./init.rc 脚本文件会启动 Zygote 进程,Zygote对应的具体程序是 /system/bin/app_process ,然后加载需要的类,调用初始化的方法,之后启动的每个应用都是Zygote的拷贝,所以Zygote进程是十分重要的.

通过在类路径中添加一个jar包,在 app_process 的特定位置调用jar包中的方法,Xposed框架实现了带扩展功能的 app_process ,然后将原有的 app_process 替换掉.

在 /data/data/de.robv.android.xposed.installer/bin/ 目录下有一个 XposedBridge.jar 文件,它就是被引用的jar包,源码在 github ,main函数在 /src/de/robv/android/xposed/XposedBridge.java 中,每个进程每次启动时都会被调用.加载模块的功能也是在这里实现.

Xposed真正强大的是它可以hook调用的方法.当你反编译修改apk时,你可以在里面插入xposed的命令,于是你就可以在方法调用前后注入自己的代码.

XposedBridge有一个私有的本地方法 hookMethodNative ,代码实现放在 app_process 中.在调用被hook的方法前会先调用此方法, hookMethodNative 有一个 handleHookedMethod 方法,可以修改传递给被hook函数的参数,变量甚至是调用其他方法.

使用Android studio 开发xposed插件相关推荐

  1. Android开发xposed,用Android Studio开发Xposed插件项目步骤

    1.使用Android Studio新建项目,在app目录下新建lib,并导入xposed的jar包. jar包下载地址:https://jcenter.bintray.com/de/robv/and ...

  2. Android Studio开发-高效插件强烈推荐

    Android Studio开发-高效插件强烈推荐 现在Android的开发者基本上都使用Android Studio进行开发(如果你还在使用eclipse那也行,毕竟你乐意怎么样都行).使用好And ...

  3. XM7 FOR ANDROID,如何使用Android Studio开发Gradle插件

    缘由 首先说明一下为什么会有这篇文章.前段时间,插件化以及热修复的技术很热,Nuwa热修复的工具NuwaGradle,携程动态加载技术DynamicAPK,还有希望做最轻巧的插件化框架的Small.这 ...

  4. android studio 开发实用插件

    1. JsonOnlineViewer android studio中调试接口数据 2. Sexy Editor 3. GsonFormat 4. CodeGlance 在右边可以预览代码,实现快速定 ...

  5. 安卓逆向——AS开发Xposed插件demo案例

    AS开发Xposed插件demo案例 环境和工具 : 模拟器:雷电 4.0.43版本 安卓版本:7.1.2  x86 Xposed :xposed-installer-3-1-5 安装好 androi ...

  6. 【Android 应用开发】Ubuntu 下 Android Studio 开发工具使用详解 (旧版本 | 仅作参考)

    . 基本上可以导入项目开始使用了 ... . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/21035637 ...

  7. Android Studio最全插件整理

    在Android开发中,合理的使用Android Studio插件不但可以提高开发效率,还能从整体上提高代码的质量.下面就Android开发中常见的一些插件做一个整理. 1,GsonFormat Gs ...

  8. Android studio 常用的插件

    Android studio 常用的插件 Exynap Effortless Android Development [官网地址]( http://exynap.com/) ![Effortless ...

  9. android移动开发软件安装,android studio 开发的安卓软件怎么安装到手机上

    android studio 开发中如何让运用运行在真机中. 大体实现方式有3种: 分别是: 真机通过usb插到电脑上进行开发. android studio 上面编写程序进行编译apk版本,通过其他 ...

最新文章

  1. 我有个师兄,毕业后投身了学术自媒体行业
  2. linux开机自动打开全屏,如何修改Linux开机启动logo并使其全屏显示?
  3. js操作indexedDB增删改查示例
  4. 跟我学 Java 8 新特性之 Stream 流(二)关键知识点
  5. c#+handle.exe实现升级程序在运行时自动解除文件被占用的问题
  6. 生产问题分析!delete in子查询不走索引?!
  7. MySQL 5.7主从复制从零开始设置及全面详解——实现多线程并行同步,解决主从复制延迟问题!...
  8. 微信也QQ服务器,妄想山海QQ区还是微信区好 平民服务器选择推荐
  9. 抖音快闪PPT制作教程
  10. 计算机终端保密检查 玩游戏,计算机终端保密检查工具(光盘版)
  11. js2D物理引擎插件
  12. 力学现象演示——圆周运动与弹簧弹力
  13. 机器视觉硬件之光源选型以及打光技巧
  14. python饿了么商家开放平台模拟网页http请求实战
  15. MySQL数据库,创建表空间
  16. 代码实现WIFI自动连接与连接指定WIFI源码
  17. Uncaught TypeError: Cannot read property 'opera' of undefined
  18. 软件架构哲学:和而不同、知行合一、大道自然
  19. can‘t load package: cannot find module providing package github.com/hyperledger/fabric/core/chaincod
  20. 关于校招那些事(一)—— 简历

热门文章

  1. android数字滚动控件,Ticker 滚动数字控件
  2. 忆黄霑(文/林青霞)
  3. 仿真软件测试基尔霍夫定律,标签:基尔霍夫定律
  4. 【genius_platform软件平台开发】第七十九讲:Linux系统中可执行程序后台运行的几种方式
  5. Termux – Android运行aarch64 – Linux – 安卓设备建站 – 让旧安卓设备老树新花
  6. 自己制作脚手架——完整版
  7. Java各个版本的JDK下载地址你值得拥有
  8. python可以自动拆分表格吗_Python 拆分表格并发送邮件
  9. mysql 节假日判断_sql 节假日判断(春节、中秋、国庆、周末等)
  10. Calcite 原理解析