Android-获取当前Activity脚本

起始

身为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、是否有手机、模拟器连接!!!")

猜你喜欢

转载自blog.csdn.net/qq_16251833/article/details/80054111
今日推荐