从 入口代码中可以看出,我们要先选一个Process,也就是下面这个界面
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N10nofbZ-1631089219217)(https://user-gold-cdn.xitu.io/2018/4/14/162c4b744805ad02?imageView2/0/w/1280/h/960/ignore-error/1)]
#### Window选择
之后会在Background执行`LayoutInspectorAction.GetClientWindowsTask`,这个Task会获取当前活跃的ClientWindow(也就是Android中的Window),如果超过一个的话,会出现对话框让我们选择,这里就不贴图了,反正大家都用过。
#### Capture View
选择了Window之后就会在Background执行`LayoutInspectorCaptureTask`,这个Task会获取到需要显示的View Hierarchy,View Properties以及一张BufferedImage(选择Window的截图),这些信息全部以二进制的信息储存在.li文件中
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SD0W7UqN-1631089219219)(https://user-gold-cdn.xitu.io/2018/4/14/162c4b7468522e27?imageView2/0/w/1280/h/960/ignore-error/1)]
#### 显示
然后Layout Inspector自定义了一个FileEditor以支持.li文件的显示,也就是我们能看到View Tree和Properties Table的主界面。具体显示细节可参考`LayoutInspectorContext`类
#### Android SDK中的响应
上面介绍了Layout Inspector在插件端的简单流程,它想Android端要了Window信息,View的信息,相关代码都在`HandleViewDebug`类,下面是这个类的一些结构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nHzr6L3S-1631089219220)(https://user-gold-cdn.xitu.io/2018/4/14/162c4b7469b2a9b1?imageView2/0/w/1280/h/960/ignore-error/1)]
也就是说服务端发出了一些命令的包,那作为客户端的Android是在哪里作出响应的呢?经过我的代码查找,我在Android SDK中发现了一个`DdmHandleViewDebug`类和`ViewDebug`类
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N2CziDZx-1631089219222)(https://user-gold-cdn.xitu.io/2018/4/14/162c4b746cb98937?imageView2/0/w/1280/h/960/ignore-error/1)]
从两个类的structure中就可以看出,Android端是在`Vi
做一个帮你快速调试UI参数的Android插件,这原因我服了
最新推荐文章于 2024-04-29 06:36:22 发布