一些使用Python编写获取手机App日志的操作

如何获取手机当前打开的App的包名

如何获取当前App进程的PID

如何查看当前App的日志

如何将日志保存到文件

如何关闭进程

如何不显示命令行窗口

1.如何获取手机当前打开的App的包名

可以直接在命令行中输入adb shell dumpsys window | findstr mCurrentFocus

以手机QQ为例,读取到的mCurrentFocus的信息为

mCurrentFocus=Window{cb7270e u0 com.tencent.mobileqq/com.tencent.mobileqq.activity.AddAccountActivity}

然后通过字符串分割,提取出包名 "com.tencent.mobileqq", 如果有需要的话同样可以获取到当前活动名。

如果在Python中使用的话,可以用如下方法

import os

data = os.popen("adb shell dumpsys window | findstr mCurrentFocus")

mCurrentFocus = data.read()

list1 = mCurrentFocus.split(' ')

list2 = list1[4].split('/')

packageName = list2[0]

print(packageName)

2.如何获取当前App进程的PID

在命令行中直接输入命令adb shell "ps | grep com.tencent.mobileqq" 可以得到这个应用所有的进程信息,有的App只有一个进程,有些App会有多个进程。这里注意 grep命令是在Linux 下使用的,如果想在Windows环境下使用,前后需要加上双引号,否则会报错。

u0_a98 991 744 2202676 125564 0 0 S com.tencent.mobileqq:tool

u0_a98 31810 744 1938984 68956 0 0 S com.tencent.mobileqq:MSF

u0_a98 32714 744 2218736 226968 0 0 S com.tencent.mobileqq

其中第二列为进程的PID,然后我们可以通过Python中的分割字符串等操作来获取PID。

3.如何查看当前App的日志

网上一些帖子都使用了find方法或者grep方法,这些在查找的时候都会附加一些其他的日志,通过查看adb logcat的帮助文档,发现其中有一条

--pid= Only prints logs from the given pid

这样我们可以通过如下命令来获取制定的PID的日志

adb shell logcat --pid=32714

或者更简便的

adb shell logcat --pid=$(pidof -s com.tencent.mobileqq)

同时我们还可以加以约束,比如只要Warning以上的日志

adb shell logcat *:W --pid=$(pidof -s com.tencent.mobileqq)

得到的日志如下

--------- beginning of main

06-04 20:39:56.804 32714 710 E DingdongPluginBizHandler: 0x51d_1 respond msf error: retCode[1002].

06-04 20:40:52.953 32714 32714 W InputMethodManager: startInputReason = 1

06-04 20:40:52.971 32714 32747 W libEGL : EGLNativeWindowType 0xe0e6d808 disconnect failed

4.如何将日志保存到文件

有两种方法

1.一种是在命令中直接添加> filepath,命令如下

adb shell logcat *:W > E:/log.txt

2.更改subprocess.Popen的属性

logfile = open("E:/log.txt", 'w')

command = "adb shell logcat *:W"

subprocess.Popen(command, stdout = logfile, shell=True)

5.如何关闭进程

运行代码后,一共会打开两个进程, 一个是 cmd.exe,第二个是adb.exe,都要关闭

log = subprocess.Popen(command)

##关闭

try:

log.terminate() #关闭 cmd.exe

os.popen("adb kill-server") #关闭 adb.exe

except:

pass

6.如何不显示命令行窗口

通过更改subprocess 中的startupinfo

st = subprocess.STARTUPINFO

st.dwFlags = subprocess.STARTF_USESHOWWINDOW

st.wShowWindow = subprocess.SW_HIDE

cmd = subprocess.Popen(command, startupinfo=st)

python操作手机app_【Python】[技术博客] 一些使用Python编写获取手机App日志的操作...相关推荐

  1. 响应式瀑布流布局新闻资讯技术博客织梦模板/DedeCMS自适应手机版游戏新闻网站源码下载

    响应式瀑布流布局新闻资讯技术博客织梦模板,DedeCMS自适应手机版游戏新闻网站源码下载.本套织梦模板采用织梦最新内核开发的模板,这款模板使用范围广,不仅仅局限于一类型的企业,游戏新闻.游戏博客类的网 ...

  2. 新闻头条自媒体系统php,新闻头条-新闻自媒体-技术博客织梦模板(带手机版)...

    点击查看模板演示网站 (因演示站服务器运行有点慢,请多等待一会) 或者直接用手机扫一扫进入手机演示站 dedecms内核开发的新闻头条,新闻自媒体,创业博客,科技博客,学习博客整站源码,网站采用最新的 ...

  3. python处理心电图_【技术博客】Python玩转信号处理与机器学习入门

    作者:王镇 面对毫无规律的随机信号,看着杂乱无章的振动波形,你是否也像曾经的我一样一头雾水,不知从何处下手.莫慌,接下来小编就带你入门怎样用python处理这些看似毫无卵用实则蕴藏巨大信息的随机信号. ...

  4. PYTHON字典dictionary用法laurentluce技术博客

    http://www.laurentluce.com/posts/python-dictionary-implementation/

  5. 大学使用python 编辑器_[雪峰磁针石博客]2018 最佳python编辑器和IDE

    IDE没有统一的标准,自己习惯就是最好的.本文列出一些较常用的IDE,供大家参考. 一般而言,WingIDE.PyCharm.Spyder.Vim是比较常用的IDE. Spyder Spyder是Py ...

  6. python个人博客搭建说明书_技术分享|利用Python Django一步步搭建个人博客(二)...

    原标题:技术分享|利用Python Django一步步搭建个人博客(二) Hello,欢迎来到我们的"利用Python Django一步步搭建个人博客"系列的第二部分.在第一部分中 ...

  7. python脚本监控网站状态 - 赵海华_运维之路 - 51CTO技术博客

    python脚本监控网站状态 - 赵海华_运维之路 - 51CTO技术博客 python脚本监控网站状态 2013-01-09 09:21:02 标签:监控 python 原创作品,允许转载,转载时请 ...

  8. 用python搭建个人博客过程_技术分享|利用Python Django一步步搭建个人博客(四)...

    您好,欢迎来到本期"利用Python Django一步步搭建个人博客"系列的第四部分.在上一篇教程中,我们学习了如何编写URL并将其映射到页面.在我们继续之前,我们需要做的一件事是 ...

  9. python之syslog学习 - 坏男孩 - 51CTO技术博客

    python之syslog学习 - 坏男孩 - 51CTO技术博客 python之syslog学习 - 坏男孩 - 51CTO技术博客 python之syslog学习 2010-04-22 17:47 ...

最新文章

  1. Fragment 复习一
  2. linux change linux login shell
  3. Mysql共享锁实例_mysql共享锁与排他锁用法实例分析
  4. OSPF 报文 链路状态请求报文 LSR
  5. 网络编程学习笔记一:Socket编程
  6. Delphi 之 第八课 动态数组
  7. 比特位计数—leetcode338
  8. hdu 2196 computer
  9. python 基础(一)
  10. Centos7通过yum安装jdk8
  11. 5-5图层的链接-新版本不常用
  12. .bat以管理员身份运行
  13. Spring(四):面向切面编程AOP
  14. Photoshop插件--创建暗调通道--脚本开发--PS插件
  15. 小程序发布上线流程_小程序如何发布?微信小程序发布流程很简单
  16. 4 Three.js一个案例详解
  17. 全世界明星都在穿白T?永不发黄,显瘦十斤,两件才99元!
  18. 形容词,名词记忆(五):ing ,ed 后缀常用词
  19. DEVC艹如何设置初始的源码
  20. 两轮差速移动机器人从A点移动到B点的C++语言代码

热门文章

  1. 本地连接 阿里云 window 服务器mysql 总是2003
  2. Python爬虫CSS Selector的使用
  3. 【PAT乙级】1031 查验身份证 (15 分)
  4. Python os模块常用介绍
  5. 多线程,你觉得你安全了?(线程安全问题)
  6. MySQL读写分离应用层解决
  7. 计算机自动启动无法开机,开机自启动被关闭,无法保护计算机安全,这是为啥。怎么办?...
  8. python里res有什么用_python – 为什么在tensorflow中构建resnet模型时使用固定填充...
  9. 电脑怎么连蓝牙耳机_魅族蓝牙耳机POP2说明书 魅族蓝牙耳机POP2怎么样
  10. 【LeetCode】0103.二叉树的锯齿形层序遍历