Xposed入门浅析

来源:互联网 发布:lte中mr优化案例 编辑:程序博客网 时间:2024/06/14 11:52

    由于项目要求,最近学习了一个被称为 “Android第一神器” 的东西——Xposed,我们看下百度介绍:Xposed框架是一款可以在不修改apk的情况下影响程序运行(修改系统)的框架服务,基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运作。

1.安装框架

    安装Xposed框架首先需要 Root权限,所以要刷成开发版啦,这个没什么好讲的,按照自己手机品牌、型号自己刷去吧。

     然后就是安装Xposed安装器(先是安装Xposed安装器,在安装框架),我的手机是小米所以我在小米社区里下载的 MIUI专版,别的品牌手机可以去官网下载

官网链接:点击

MIUI安装教程:点击

    安装好安装器之后会出现如下图一的(我这是安装好Xposed框架的,所以状态是已安装)                      安装好后会出现图二的界面(当然你刚开始也是未激活),小米手机选择MIUI专版安装(图三)。                                

郑重提示:Xposed框架可能会使手机无法正常启动,如果你之前没听过【软变砖】、【无限重启】,又不知道在这种情况下如何恢复,请不要安装Xposed,所以请先备份

给它root权限后安装,并重启, 之后就可以选择 你的xposed模块 或 下载xposed模块了(图四),里面有很多很有用的模块(例如:修改Bilibili的主题颜色、微信主题颜色、QQ微信抢红包、防回撤消息等等)



安装好xposed框架后(图一)

激活xposed框架后(图二)


MIUI专版xposed(图三)


图四



2.学习编写Xposed模块

    新建项目,导入jia 包 jar下载链接 ,导入后修改build.gradle, 把  compile files('libs/XposedBridgeApi-54.jar')  改为  provided files('libs/XposedBridgeApi-54.jar')

    之后在manifest 里添加 

<meta-data  android:name="xposedmodule"

                    android:value="true"/>    作为xposed模块

<meta-data  android:name="xposeddescription"

                     android:value="Simple Xposed Test"/>     模块描述

<meta-data  android:name="xposedminversion"

                    android:value="54"/>      最低版本号

    然后新建一个Test类,实现IXposedHookLoadPackage, 实现它的方法   

//获取手机中所有应用的包名                                                                                          XposedBridge.log("loadpackage name : "+ loadPackageParam.packageName);

//测试Hook静态变量,修改手机机型和厂商XposedHelpers.setStaticObjectField(android.os.Build.class,"MANUFACTURER","leon");//厂商XposedHelpers.setStaticObjectField(android.os.Build.class,"MODEL","made in leon");//机型

在里面我写了一个log打印所有包名,  还有一个 修改手机厂商 和 手机机型

最后在main 文件夹下新建文件 assets, 在新建文本 xposed_init, 在里面写上 你的包名 + 刚刚写的类名  com.example.administrator.xposeddemo2.Test, 编译程序,  编译完成后再 (如图四)xposed框架的  模块中找到你的应用 选中, 这是应用会提示你重启手机(没提示也无所谓),对,没错就是重启(每编译一次就要重启一次,很麻烦),重启后就能看到如下图图五: 我的手机型号改为(made in leon)了,厂商我没找到在哪。。。

图六是包名log,在xposed的日志中可以看到, AS上也可以看到。



手机型号(图五)



包名log(图六)
以上就我目前所了解的Xposed开发,还很浅薄,我会继续学习,做出更好的Xposed模块应用。
0 0