Android网络优化---网络优化工具选择

119 阅读3分钟

#三类工具

· Network Profiler · 抓包工具 · Stetho

#Network Profiler

  • AS自带的工具; 显示实时网络活动:发送、接收数据及连接数等等, 详情见下文;
  • 需要手动启用高级分析
  • 只支持HttpURLConnectionOkHttp网络库

主动启动高级分析 运行项目WebViewTest, 打开Profiler: 进行一次网络请求, 点击NetWork栏目, 选择一段时间段(类似于内存优化时候做的操作), 可以看到对应的信息:双击信息项,可以在右侧弹出详细的信息, 包括请求的资源、请求的方式、请求的文件类型、大小、接口URL等等 还能看到调用栈:



#抓包工具

  • Charles 是使用Java开发的,跨平台、mac使用得比较多;
  • Fiddler Window使用的比较多;
  • Wireshark
  • TcpDump

###Charles **[官网以及下载地址](https://www.charlesproxy.com/latest-release/download.do)** - **断点功能** - **Map Local** - **弱网环境模拟** ![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a1a7811bd4a2449da6b307a926eb6a93~tplv-k3u1fbpfcp-zoom-1.image) **打开Charles,清掉缓存: ![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/394154652acf4c4697448795bba8aefb~tplv-k3u1fbpfcp-zoom-1.image) 发送一个请求: ![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3ffdbfcbeaab416fb8ba4d905c42e04b~tplv-k3u1fbpfcp-zoom-1.image)可以看到Charles抓到的信息其实是非常全面的: 概述:![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f6629f84fdbc48d29c4514d7898d448e~tplv-k3u1fbpfcp-zoom-1.image)内容:![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f59134acc3ee42dba497dd2ea0d2e612~tplv-k3u1fbpfcp-zoom-1.image)还有其他一些具体的栏目就不细说了;**
###断点功能 >**用于`拦截`Request或者Response, `整改`请求或者返回的数据(数据内容或者格式等), 更方便地`查看`请求或者返回的`数据`以及详细的`网络交互信息` !!!**

选中要打断点的URL,右键,选择Breakpoints: 选择顶栏的Proxy中的Breakpoint Settings: 可以看到刚刚打了断点的URL, 双击一下Breakpoint Settings窗口中的URL,底下可以配置Request和Response的断点,这里先测试Response的,然后两个窗口都点击OK: 接着再一次对这个打了断点的URL进行请求, 发现会被拦截了, 并且Charles会弹出来这么一个窗口,我们选择Edit Response:下方的栏目可以选择不同的格式对返回结果进行展示: 修改一下内容, 然后点击右下角的Execute按钮, 可以释放断点,把拦截的Response“放生”: 可以看到刚刚被拦截的浏览器请求就收到数据了, 并且是我们修改后的数据:

####这便是所谓的断点与拦截! 另外,我们还能利用断点更改Response文件的内容格式(Content-Type: ), 比如,如果文件格式不对,我们可以通过断点的Edit Response中, 对Headers进行整改:改成Content-Type: application/json之后, 可以发现多了JSON相关的显示选择栏可以选:

####如此通过抓包的方式来查看Response数据,可以方便很多



###Map Local

比较多的使用于服务端的接口还没有Ready, 只是定了一个协议的情况; 此时使用Map Local,可以不影响客户端的开发进度, 客户端可以通过Map Local自己模拟的一个假数据的接口去测试, 同时也可以进行补充的测试

对刚刚那个接口取消断点, (实战中需要对要模拟的接口)点击MapLocal: 选择本地的模拟数据 再次请求这个接口URL的时候, 客户端就不会再走网络途径URL对应的资源请求了, 而是走本地路径,也就是刚刚我们在Map To中设置的模拟数据!!! 如图所示,接口请求返回的不再是服务端的数据了, 而是刚刚我们自己准备好的模拟数据、我们设定好本地的数据路径!!! 其实就是类似于Apache的一个功能;


###弱网环境模拟 **先通过顶栏去掉接口的`MapLocal功能`;![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b2c78a1088cf4a30a914209b326fc120~tplv-k3u1fbpfcp-zoom-1.image)把Enable去掉:![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d6ac963fd19a4f48afd0c2a00fa64989~tplv-k3u1fbpfcp-zoom-1.image)![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/981908700af7401b9e07c28d6d584528~tplv-k3u1fbpfcp-zoom-1.image) 开始软网模拟, 点击顶栏的`Throttle Settings`:【Throttle 节流阀】![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/291dc9bf0cf74acba50fb61eb88aa4a6~tplv-k3u1fbpfcp-zoom-1.image) 进入一个配置窗口:![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/86af304b10ea4eaca526fea79c937e40~tplv-k3u1fbpfcp-zoom-1.image) 可以选择一个弱网模式去进行模拟测试, 然后观察对应弱网模式下,某个网络请求的进行情况,如时延、DNS解析耗时等等;**



#Stetho

  • 强大的应用调试桥,连接Android和Chrome;
  • 网络监控、视图查看、数据库查看、命令行扩展等;

引入库:

implementation 'com.facebook.stetho:stetho:1.5.0'
implementation 'com.facebook.stetho:stetho-okhttp3:1.5.0'





参考:

  • 慕课网