如何定位一个View在哪里
如果这个view可以点击,在OnClickListener的OnClick方法上面打个断点
如果这个View无法点击,请在View的OnTouch方法添加断点,用手触摸一下即可。
点击一下命中之后即可在左下角的调用栈看到对应的View.
如何输出一个方法的调用栈
我们知道如果这个方法只被执行一次,那么你在这个方法上添加一个断点然后执行一次看debug调用栈就好了,但是如果这个方法被很快速的调用,那么大概率断点会卡死或者不调用,实战中是这样的。
如果这个方法可以被你修改,那么加一句log
Log.d("xx","xx",new Throwable("xx"));
这样在log中过滤这句话就能看到所有的方法调用栈了。
如果这个方法不能被你修改怎么办?比如我想看一个sdk中被混淆的方法,我无法进行修改。
此处推荐一个aop框架:github.com/eleme/lance…
集成这个框架之后,我举一个输出onTouch事件的log调用栈
@TargetClass("android.view")
@Proxy("onTouchEvent")
public boolean onTouchEvent(MotionEvent event) {
Log.d("xx", "xx", new Throwable("xx"));
return (boolean) Origin.call();
}
如何知道当前Activity是哪个
在log中ActivityManager,并且选择为No Filters,然后即可看到当前Activity启动的是哪个,并且能看到启动的参数。
如何知道当前App的布局状况
如果你的项目中集成了stetho,打开你的chrome浏览器,输入
chrome://inspect/
然后你就能进入到一个页面
点击inspect即可进入到布局管理中
这里打马赛克的位置就是布局文件,鼠标放在上面,手机上会实时显示这个布局所在的区域,用蓝色高亮。十分方便。