Fecebook Stetho工具介绍,大厂安卓面试真题精选

Fecebook Stetho工具介绍,大厂安卓面试真题精选1112 其中 HelloWorldDu 和 APODDumperPl 是自定义的插件 具体内容可以参考 Stetho 提供的 sample 程序运行 dumpapp 脚本后以达到与 app 交互通信的效果

使用功能


  1. adb方式连接到设备
  2. 运行debug模式的app
  3. 在Chrome浏览器地址栏中输入chrome://inspect
  4. 选择需要inspect的应用进程

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

查看App的布局

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

网络诊断

给OkHttpClient添加拦截器。

new OkHttpClient.Builder() .addNetworkInterceptor(new StethoInterceptor()) .build();

  • 1
  • 2
  • 3

主要功能有包括下载图片的预览,JSON数据查看,网络请求内容和返回内容

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

数据库、sp文件查看

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

自定义dumpapp插件

Stetho.initialize(Stetho.newInitializerBuilder(context) .enableDumpapp(new DumperPluginsProvider() { @Override public Iterable<DumperPlugin> get() { return new Stetho.DefaultDumperPluginsBuilder(context) .provide(new HelloWorldDumperPlugin()) .provide(new APODDumperPlugin(context.getContentResolver())) .finish(); } }) .enableWebKitInspector(new ExtInspectorModulesProvider(context)) .build());

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

其中HelloWorldDumperPlugin和APODDumperPlugin是自定义的插件,具体内容可以参考Stetho提供的sample程序

运行dumpapp脚本后以达到与app交互通信的效果。

$ ./dumpapp -l apod crash files hello hprof prefs

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
原理简介

其中dumpapp是一个python脚本,通信的方式使用的是android提供的smartsocket接口

--- smartsockets ------------------------------------------------------- Port 5037 is used for smart sockets which allow a client on the host side to request access to a service in the host adb daemon or in the remote (device) daemon. The service is requested by ascii name, preceeded by a 4 digit hex length. Upon successful connection an "OKAY" response is sent, otherwise a "FAIL" message is returned. Once connected the client is talking to that (remote or local) service. client: <hex4> <service-name> server: "OKAY" client: <hex4> <service-name> server: "FAIL" <hex4> <reason>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

使用PyCharm对Python进行断点调试

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这段脚本的功能就是通过读取/proc/net/unix文件去找app设置的socket

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1. 扫描android所有提供socket功能的设备,找到steho的devtools_remote

2. 建立与第一步找到的进程socket,然后通过smartsocket进行通信。

3. 设备上的app相当于一个服务器,脚本是客户端对它进行访问

后缀为_devtools_remote的socket是android留给chrome的后门。

// Note that _devtools_remote is a magic suffix understood by Chrome which //causes the discovery process to begin.

  • 1

详细内容可以看这篇官方文档

这篇文档提供的例子是在命令行中输入下面的命令,就能在电脑上看到手机chrome中的内容了:

adb forward tcp:9222 localabstract:chrome_devtools_remote

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

打开的chrome-devtool其实是一个websocket连接。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

private void handlePageList(LightHttpResponse response) throws JSONException { if (mPageListResponse == null) { JSONArray reply = new JSONArray(); JSONObject page = new JSONObject(); page.put("type", "app"); page.put("title", makeTitle()); page.put("id", PAGE_ID); page.put("description", ""); page.put("webSocketDebuggerUrl", "ws://" + mInspectorPath); Uri chromeFrontendUrl = new Uri.Builder() .scheme("http") .authority("chrome-devtools-frontend.appspot.com") .appendEncodedPath("serve_rev") .appendEncodedPath(WEBKIT_REV) .appendEncodedPath("devtools.html") .appendQueryParameter("ws", mInspectorPath) .build(); page.put("devtoolsFrontendUrl", chromeFrontendUrl.toString()); reply.put(page); mPageListResponse = LightHttpBody.create(reply.toString(), "application/json"); } setSuccessfulResponse(response, mPageListResponse); }

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
img

最后

本文在开源项目GitHub中已收录,里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…

目前已经更新的部分资料,需要的自己取:



片转存中…(img-tVLQJiDB-08)]

最后

本文在开源项目GitHub中已收录,里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…

目前已经更新的部分资料,需要的自己取:

[外链图片转存中…(img-nZoudZWJ-08)]
[外链图片转存中…(img-Vnn4FuFy-08)]
[外链图片转存中…(img-s6zAwBVm-09)]

今天的文章 Fecebook Stetho工具介绍,大厂安卓面试真题精选分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2024-12-08 23:51
下一篇 2024-12-08 23:46

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/80686.html