起始
身为Android开发,我想大家对在跟踪BUG、调试的时候有个很大的痛点:测试拿过来手机说,这个页面上有问题,你一看蒙了,这鬼知道是哪个页面,一想,adb命令来一发adb shell ...
步骤
时间长了,你会发现:
1. 打开Terminal
2. 输入adb shell dumpsys activity | grep mFoc
3. 拷贝结果
4. 打开Android studo
的搜索类
基本是这4个步骤,实际上痛点就在这一条长长的命令,而且不好记忆,不小心打错了还的仔细看看哪里写错了
分析
对于基本上固定的4个步骤,可以考虑使用脚本工具进行自动化获取并拷贝到剪切板,目前主流的脚本式工具语言python
在 Mac 、linux中都是标配,而Windows的安装也是超级简单;
下面的脚本文件主要是简化了输入的难度,使用草鸡简单,直接执行命令:`python current_activity.py`,如果执行正常,当前页面的java类名直接赋值到了剪切板,可以直接粘贴使用;
使用
python current_activity.py
源码
# coding:utf-8
# !/usr/bin/python
__author__ = "Egan"
"""
Mac 环境:
本脚本是通过 adb 获取当前的 Activity
"""
# FileName:current_activity.py
import commands
import subprocess
# 将数据copy到剪切板
def set_clipboard_data(data):
p = subprocess.Popen(['pbcopy'], stdin=subprocess.PIPE)
p.stdin.write(data)
p.stdin.close()
p.communicate()
print('当前页面的名字已复制到剪切板')
if __name__ == "__main__":
# 执行 adb 获取当前连接的虚拟机或者真机的 可见的页面.
result = commands.getstatusoutput("adb shell dumpsys activity | grep 'mFoc'")
# print(result)
if result[0] == 0:
# 对命令执行结果进行解析
split_result = result[1].split("\n")[0].split("/")
packages = split_result[0].split(" ")
# 获取包名以及当前页面的名字
current_activity_path = packages[len(packages) - 1] + split_result[1].split(" ")[0]
print current_activity_path
current_activity_path_list = current_activity_path.split('.')
activity = current_activity_path_list[len(current_activity_path_list) - 1]
# print activity
# 对数据进行处理
activity = activity.strip().replace('\r\n', ' ').replace('\n', ' ')
# 复制到剪切板
set_clipboard_data(bytes(activity))
else:
print("错误信息:"+result[1])
print("根据错误信息,请检查:\n1、是否配置了 ADB 环境!!!\n2、是否有手机、模拟器连接!!!")