【Python】[技术博客] 一些使用Python编写获取手机App日志的操作
一些使用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=<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】[技术博客] 一些使用Python编写获取手机App日志的操作的更多相关文章
- 【技术博客】利用Python将markdown文档转为html文档
利用Python将markdown文档转为html文档 v1.0 作者:FZK 元素简单的md文件 Python中自带有一个markdown库,你可以直接这样使用 md_file = open(&qu ...
- 原创翻译-值得关注的10个python语言博客
原文链接 原文链接的网页感觉网络不是很好,不容易上.我在这里就给大家做个翻译吧. 大家好,还记得我当时学习python的时候,我一直努力地寻找关于python的博客,但我发现它们的数量很少.这也是我建 ...
- 值得关注的10个python语言博客(转)
大家好,还记得我当时学习python的时候,我一直努力地寻找关于python的博客,但我发现它们的数量很少.这也是我建立这个博客的原因,向大家分享我自己学到的新知识.今天我向大家推荐10个值得我们关注 ...
- 值得关注的10个python语言博客
大家好,还记得我当时学习python的时候,我一直努力地寻找关于python的博客,但我发现它们的数量很少.这也是我建立这个博客的原因,向大家分享我自己学到的新知识.今天我向大家推荐10个值得我们关注 ...
- python学习博客地址集合。。。
python学习博客地址集合... 老师讲课博客目录 http://www.bootcdn.cn/bootstrap/ bootstrap cdn在线地址 http://www.cnblogs. ...
- 一文搞定scrapy爬取众多知名技术博客文章保存到本地数据库,包含:cnblog、csdn、51cto、itpub、jobbole、oschina等
本文旨在通过爬取一系列博客网站技术文章的实践,介绍一下scrapy这个python语言中强大的整站爬虫框架的使用.各位童鞋可不要用来干坏事哦,这些技术博客平台也是为了让我们大家更方便的交流.学习.提高 ...
- 【软工】[技术博客] 用Monaco Editor打造接近vscode体验的浏览器IDE
[技术博客] 用Monaco Editor打造接近vscode体验的浏览器IDE 官方文档与重要参考资料 官方demo 官方API调用样例 Playground 官方API Doc,但其搜索框不支持模 ...
- [技术博客] BeautifulSoup4分析网页
[技术博客] BeautifulSoup4分析网页 使用BeautifulSoup4进行网页文本分析 前言 进行网络爬虫时我们需要从网页源代码中提取自己所需要的信息,分析整理后存入数据库中. 在pyt ...
- IT技术博客收藏
1. coolshell.cn 特点: 每篇都是精品 2. 云风 特点: 3. 阮一峰的博客 特点:高精深 3. offbye涛声依旧-全端技术博客 特点: android的开发技术比较多,非常值得一 ...
随机推荐
- js中 json对象与json字符串相互转换的几种方式
以下总结js中 json对象与json字符串相互转换的几种方式: 一.JSON对象转化为JSON字符串 1.使用JSON.stringify()方法进行转换 该方法不支持较老版本的IE浏览器,比如:i ...
- Js基本语句
js基本语句整理导向图 ---欢迎收藏^ - ^
- 搭建前端监控系统(五)Nodejs怎么搭建消息队列
怎样定位前端线上问题,一直以来,都是很头疼的问题,因为它发生于用户的一系列操作之后.错误的原因可能源于机型,网络环境,接口请求,复杂的操作行为等等,在我们想要去解决的时候很难复现出来,自然也就无法解决 ...
- 手写神经网络Python深度学习
import numpy import scipy.special import matplotlib.pyplot as plt import scipy.misc import glob impo ...
- Letsencrypt.org CA免费证书生成
Letsencrypt.org CA免费证书使用 Let's 支持多中客户端,这里使用acme.sh客户端配置免费证书. acme.sh优点: github官方地址 纯用Shell(Unix外壳)语言 ...
- 4.LVS的三种工作模式_DR模式
1.DR模式(直接路由模式:Virtual Server via Direct Routing) DR模式是通过改写请求报文的目标MAC地址,将请求发给真实服务器的,而真实服务器响应后的处理结果直接返 ...
- SaltStack--快速入门
saltstack快速入门 saltstack介绍 Salt,一种全新的基础设施管理方式,部署轻松,在几分钟内可运行起来,扩展性好,很容易管理上万台服务器,速度够快,服务器之间秒级通讯 主要功能远程执 ...
- 轻量级C#编辑器RoslynPad((基于Roslyn编译器))
简介 RoslynPad是一个Apache 2.0协议开源的轻量级C#编辑器.支持自动完成,语法提示,修改建议等功能.很适合平时随手写个C#程序看看运行结果. 目前版本:0.10.1,无需保存也可以运 ...
- MinGW-w64离线安装
1.下载 如果你能从在线 安装,那最好就在线安装吧. 如果你能连上官网,那可以选择从官网去下载,地址:https://osdn.net/projects/mingw/releases/ https:/ ...
- 1.使用FluentNHibemate 操作数据库,添加映射到数据库
1.创建个控制台工程MySQLDateBase 2.工程中添加Fluent NHibernate映射工具 点击管理NuGet程序包,点击浏览,搜索Fluent NHibernate 点击安装..安装完 ...