前言
实际开发过程中,我们需要和后端进行服务联调 在联调的时候,如果测试环境接口有问题,我们就需要催后端来处理。 那么怎么知道是后端的问题呢? 这就需要我们自己拿到接口对应的返回值 要拿到返回值,一般的方案有: 1:Fiddler等抓包软件抓包 2:日志打印 3:AS自带的抓包工具 以上方案各有利弊,但总的来说,还是不是那么方便 那么有没有一种方法,可以自动帮我们完成这些操作呢? 比如我们可以把接口返回的信息做成一个apk 类似leakcanary这种 当我们自己想看的时候,就可以点开这个apk来看。 又或者在通知栏提示,可以点进去查看详情 今天就分享一下这两个方案
方案一
首先推荐的是通知栏的方案:Chuck 具体介绍如下: Android网络抓包工具–Chuck Chuck的git地址如下: 添加链接描述 具体使用方法如下: 1:在app下的build.gradle中添加以下依赖:
dependencies {
debugCompile 'com.readystatesoftware.chuck:library:1.1.0'
releaseCompile 'com.readystatesoftware.chuck:library-no-op:1.1.0'
}
2:创建一个ChuckInterceptor实例(需要为其提供上下文),并在构建OkHttp客户端时将其添加为拦截器:
Builder httpClientBuilder = new OkHttpClient.Builder();
if(BuildConfig.DEBUG){
httpClientBuilder.addInterceptor(new ChuckInterceptor(context));
}
这样就好了 具体效果如图:
方案二
这个是由github上的一位老哥提供的 具体介绍如下: Android抓包从未如此简单 效果如图:
使用起来也很简单 第一步:添加依赖
debugImplementation 'io.github.lygttpod:monitor:0.0.4'
第二步:根目录build.gradle下添加如下依赖
buildscript {
dependencies {
......
classpath 'io.github.lygttpod:monitor-plugin:0.0.1'
}
}
第三步:在APP的build.gradle中添加
apply plugin: 'monitor-plugin'
原则上完成以上两步你的APP就成功集成了抓包工具,很简单有没有,如需定制化服务请看下边的个性化配置
1、修改桌面抓包工具入口名字:在主项目string.xml中添加 monitor_app_name即可,例如:
<string name="monitor_app_name">XXX-抓包</string>
2、定制抓包入口logo图标:
添加 monitor_logo.png 即可
3、单个项目使用的话,添加依赖后可直接使用,无需初始化,库里会通过ContentProvider方式自动初始化
默认端口8080(端口号要唯一)
4、多个项目都集成抓包工具,需要对不同项目设置不同的端口和数据库名字,用来做区分
在主项目assets目录下新建 monitor.properties 文件,文件内如如下:对需要变更的参数修改即可
# 抓包助手参数配置
# Default port = 8080
# Default dbName = monitor_db
# ContentTypes白名单,默认application/json,application/xml,text/html,text/plain,text/xml
# Default whiteContentTypes = application/json,application/xml,text/html,text/plain,text/xml
# Host白名单,默认全部是白名单
# Default whiteHosts =
# Host黑名单,默认没有黑名单
# Default blackHosts =
# 如何多个项目都集成抓包工具,可以设置不同的端口进行访问
monitor.port=8080
monitor.dbName=app_name_monitor_db
默认已经添加混淆,如遇到问题可以添加如下混淆代码
# monitor
-keep class com.lygttpod.monitor.** { *; }
温馨提示:
虽然monitor-plugin只会在debug环境hook代码,
但是release版编译的时候还是会走一遍Transform操作(空操作),
为了保险起见建议生产包禁掉此插件。
在jenkins打包机器的《生产环境》的local.properties中添加monitor.enablePlugin=false,全面禁用monitor插件
如何使用
1.集成之后编译运行项目即可在手机上自动生成一个抓包入口的图标,点击即可打开可视化页面查看网络请求数据,这样就可以随时随地的查看我们的请求数据了。
2.虽然可以很方便的查看请求数据了但是手机屏幕太小,看起来不方便怎么办呐,那就去寻找在PC上展示的方法,首先想到的是能不能直接在浏览器里边直接看呐,这样不用安装任何程序在浏览输入一个地址就可以直接查看数据
3.PC和手机在同一局域网的前提下:直接在任意浏览器输入 手机ip地址+抓包工具设置的端口号即可(地址可以在抓包app首页TitleBar上可以看到)
暂时就这两种方案,后面有更新的,会继续在这里补充~
|