吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 21622|回复: 58
收起左侧

[Android 原创] Xposed插件开发入门操作图文教程(基于Android Studio3.01)(送给新手的2018新年...

    [复制链接]
hackerchen 发表于 2018-2-16 13:17
本帖最后由 hackerchen 于 2018-3-15 13:19 编辑

新年好,这是我的第一个正式帖子,算是处女贴,今天又是大年初一,也是拜年贴。'

该帖子注重的是让新手成功跑起Demo,然后才有动力进一步学习,往往第一步折腾很长时间,so 我的帖子应该对新手很有帮助。
本教程主要是复现Xposed官方教程的打印日志的那个Demo。


更新:
1. 感谢13楼14楼楼主提出来的知识点,其中compileOnly 代替 provided,在我现在看到的中文教程中还没人提到,(英文的还没敢去尝试看),我有时间试一下,大家也可以去试一下。14楼的提到只需要改一处就可以,如果导入api-source.jar应该要改两处,这个我也还没试
2. 感谢版主帮我把文章中因为误操作导致的图片路径信息删除
3. 待补充

随着AS的不断更新,有些网上的教程都过时了,或者还存在一些没解释清除的问题。因此今天把基于Android studio3.01(大年初一当前最新版本)的Xposed入门插件开发的步骤整理下来,供大家参考。
由于本人也是小白,Java语法过年前15天看了一遍,因此会存在很多问题请大家指正。另外在我的教程里,有些Android代码可能会解释一下对应的Java的语法,巩固一下基础(其实是我又忘记Java的相关语法了)。(该帖没什么科技含量,大神勿喷)

材料工具准备:
  • Android Studio3.0.1(简称AS),推荐安装64bit版本(因为现在的NDK开发,AS主要支持64bit版本了。稍后NDK开发入门教程也会发出来。)
  • 有Root的虚拟机或者真机。本教程使用Genymotion虚拟机,在Genymotion下载Android5.1系统(推荐),自带root。(不建议使用5.0以下的系统,原因是提示更友好)
  • 安装XposedInstaller_3.1.5.apk
  • 下载api jar包。api-82.jar,api-82-source.jar(5.0系统推荐安装这个,这是网上推荐的)。

    如何安装AS,如何安装Genymotion,如何安装Xposed框架,在哪里下载api jar包,这些基本的操作步骤,不是本文重点,网上查资料。

    Genymotion安装可能会遇到坑,提示启动时exit(01)错误,我参考国外的坛子说是卸载Vbox->重启->重新安装Vbox->重启,运行Vbox,提示网卡错误,后来把网卡改成桥接模式,使用Genymotion的启动器(也就是桌面红色图标那个)启动成功。不要使用Vbox启动,否则只能看到黑色屏幕的启动代码,看不到模拟的手机界面。

  ======================正文开始==========================

  • 创建一个普通的android工程(如何创建就不教了),其中选择如图那个就可以了(这里其实无所谓,新手还是根据我的步骤走)。我的工程名叫HelloTest02
Image [1].png

2.切换到Projiect视图。(我相信有些人仍然使用的是Anroid视图,我之前就不会切换),点击左图的红色方框,选择Projiect就好了。效果如又图。以后所有的教程都是在Projiect视图下进行的,别人写的教程一般也是这个视图下进行的。
Image [2].png       Image [3].png

3.复制并安装jar包。把两个jar包复制到lbs目录下,然后在每个jar包上右键add as library,这样每个jar包就可以展开了。结果如下图所示。
Image [4].png
4.修改AndroidMainfest.xml
使用下面的代码直接替换掉原来得代码。(AS代码代码贴近EverNote,缩进丢失,使用sulime中转一下,颜色丢失,两者不可兼得??? )
[XML] 纯文本查看 复制代码
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android";
    package="com.kuaishou.chen.hellotest02">
     <uses-sdk android:minSdkVersion="15" />
    <application
        android:label="@string/app_name" >
        <meta-data
            android:name="xposedmodule"
            android:value="true" />
        <meta-data
            android:name="xposeddescription"
            android:value="Hook log test" />
        <meta-data
            android:name="xposedminversion"
            android:value="53" />
    </application>
    
</manifest>

效果如下,与自动生成的比较,主要的不同其实就是,applicatipn节点被替换掉了。use-sdk这句话应该是eclipse时代,安卓4.0 app开发使用的,AS时代在build.gradle指明minSDK,AS自动生成的AndroidMainfest文件没有这句话,经过测试确实可以删除这句。
Image [5].png
5.修改APP目录下的build.gradl。不出意外,不管是本教程还是其他人的教程修改的都是这个gradle文件

Image [6].png
原文dependencies部分如下
Image [7].png
修改上面的代码。(AS原来版本是compile,现在AS3改成了implementation)现在修改上面的三处implementation为provided。(我测试的是必须三处都改),具体后面(如果有的话)会进行解释
Image [8].png
6.创建测试代码。
新建一个类叫做TestHook(在包名上>右键>java class >输入名字TestHook>OK)
输入代码:注意这里面加粗的部分,包名一定对应自己的包名 类名一定要跟自己创建的java class文件名相同。如果不是按照本教程起名字和包名,AS提示错误,做相应的修改即可。大家最好开启AS的自动import功能(自己查教程),有的地方还是需要使用alt+enter导入包

package com.kuaishou.chen.hellotest02;
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.callbacks.XC_LoadPackage;
/**
* Created by Administrator on 2018/2/15.
*/
public class TestHook implements IXposedHookLoadPackage {
    public void handleLoadPackage(final XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
        XposedBridge.log("Loaded app: " + lpparam.packageName);
    }
}



7.XposedBridge 从assets 目录中的xposed_init 文件中获取入口点。xposed_init文件中每行配置一个进入点(这个地方还不懂,网上摘得),使用完全限定名。在main目录下,创建assets文件夹(在main文件夹上右键new >directory>输入文件名assets>OK。还一种方法:main文件夹右键>new>folder>assets folder>ok搞定,截图不上了,应该没什么难度

在新建的assets文件夹下面建立xposed_init文件(assets上面右键>new>file>输入xposed_init>OK
Image [9].png
xposed_init文件上输入你的包名+类名,记得一定要对应你的包名和类名,用“.”连接即可。

com.kuaishou.chen.hellotest02.TestHook


如下所示:
Image [10].png

8.接下来尝试一下Make projiects
如下图提示,生成.apk表示成功
Image [12].png

9.接下来虚拟机测试。
一般情况下,大家习惯了使用Run按钮
让AS自动安装app到虚拟机或者真机测试,但是我在这里面遇到问题
提示Default Activity not found 。原因不言而喻,就是因为之前AndroidMainfest.xml重新配置。(AS至于为何检查DefaultActivity就不清楚了)
解决方法就是在app >build>outputs>apk>debug目录下会编译出apk文件。直接把该文件拖放到虚拟机Genymotion,Genymotion自动安装。
(有一个问题:realse为什么没有生成apk???)

Image [13].png
接下来虚拟机提示模块没有激活,在xposed installer的模块里面勾选后重启即可。细节不再详述。
小技巧:Genymotion硬件重启可能实现不了(至少是我的这样),点击XposedInstaller的重启,虚拟机会卡死,然后就没反应了,需要手动关闭虚拟机,然后重新启动,这过程很慢,因为要启动VBox,并且Vbox要加载Android底层。相反使用软重启,不需要重启Vbox,不需要再加载安卓底层,所以速度快,方便,不会卡死。
Image [16].png

成功,注意这个日志,可能显示不完全,其实是可以水平左右拖动的。如果还是不方便建议,使用右上角的保存按钮,保存到log日志,然后在文件管理器打开查看。另外模拟器也支持长按文本,然后选择复制到电脑记事本或者其他文本编辑器的操作(我还不会联调,不会让AS打印出Xposwed的log信息)
Image [19].png


(大家有免费的CB鼓励一下小弟,谢谢了!


免费评分

参与人数 43吾爱币 +48 热心值 +39 收起 理由
文远张辽 + 1 + 1 谢谢@Thanks!
gongxiang + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
pookerface + 1 + 1 用心讨论,共获提升!
马丁路德银 + 1 + 1 谢谢@Thanks!
蓟元 + 1 谢谢@Thanks!
helloooworlddd + 1 用心讨论,共获提升!
cao10085 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
qtfreet00 + 6 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
大九丶 + 1 + 1 谢谢@Thanks!
木天狼星 + 1 + 1 用心讨论,共获提升!
shock-c + 1 用心讨论,共获提升!
Saber_凛 + 1 + 1 用心讨论,共获提升!
就像忘了一朵花 + 1 + 1 我很赞同!
摩天伦 + 1 + 1 热心回复!
情歌 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
菜鸟①号 + 2 + 1 感谢输出优质教程
lt666123 + 1 + 1 我很赞同!
su253 + 1 + 1 热心回复!
刘妖孽 + 1 + 1 谢谢@Thanks!
杨勇 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
xiaokezyj + 1 我很赞同!
wshq + 2 + 1 热心回复!
栀蓝 + 1 + 1 用心讨论,共获提升!
china晓五 + 1 + 1 谢谢@Thanks!
永者无敌 + 1 + 1 我很赞同!
isaacchen + 2 + 1 热心回复!
7001 + 1 我很赞同!
lin_xop + 1 + 1 热心回复!
stars-one + 1 + 1 我很赞同!
siuhoapdou + 1 + 1 谢谢@Thanks!
咸鱼而已 + 1 + 1 谢谢@Thanks!
qwqwqe + 1 + 1 热心回复!
shevip + 1 热心回复!
dwq308 + 1 + 1 我很赞同!
52pojie3009 + 1 + 1 谢谢@Thanks!
帅哥没人陪 + 1 + 1 谢谢@Thanks!
老唐不老 + 1 + 1 我很赞同!
范逸飞 + 1 + 1 用心讨论,共获提升!
时光取名叫无心 + 1 + 1 热心回复!
浙江-杺庝 + 1 + 1 老铁来个视频版吧
316655906 + 1 + 1 热心回复!
swjtu_ray + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
Erop + 1 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

swjtu_ray 发表于 2018-2-16 15:19
谢谢楼主,对开发Xposed的新手帮助颇大!
祝楼主新年快乐,狗年大吉。
 楼主| hackerchen 发表于 2018-3-11 22:04
Hmily 发表于 2018-2-22 16:10
那个地址应该是开始时候直接把图片粘贴上去导致的吧,图片需要先上传再贴到正文中,已经帮你编辑删除了,是 ...

感谢版主  现在没时间搞了,后面再补充
wpp 发表于 2018-2-16 13:39
沙发顺便膜拜一下,新年好。。我看不懂- -哈哈
头像被屏蔽
与我何干 发表于 2018-2-16 15:12
提示: 作者被禁止或删除 内容自动屏蔽
yxjoe 发表于 2018-2-16 15:50
来看看,感谢楼主分享
老唐不老 发表于 2018-2-16 17:08
楼主辛苦,新年好!
keyyan 发表于 2018-2-16 19:21
老铁,帖子编辑是很辛苦,不如直接来套视频从零开始带吧
52pojie3009 发表于 2018-2-16 20:21
祝楼主新年快乐,狗年大吉
疯狂醉虎 发表于 2018-2-16 21:17
谢谢楼主!祝楼主新年快乐,狗年大吉!
夜曲 发表于 2018-2-16 22:09
新年快乐,谢谢
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 22:32

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表