【Python】[技术博客] 一些使用Python编写获取手机App日志的操作

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

  1. 如何获取手机当前打开的App的包名
  2. 如何获取当前App进程的PID
  3. 如何查看当前App的日志
  4. 如何将日志保存到文件
  5. 如何关闭进程
  6. 如何不显示命令行窗口

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)

原文地址:https://www.cnblogs.com/bhlt1998/p/10980826.html

时间: 2024-08-29 15:11:28

【Python】[技术博客] 一些使用Python编写获取手机App日志的操作的相关文章

值得关注的10个python语言博客(转)

大家好,还记得我当时学习python的时候,我一直努力地寻找关于python的博客,但我发现它们的数量很少.这也是我建立这个博客的原因,向大家分享我自己学到的新知识.今天我向大家推荐10个值得我们关注的python博客,这些博客的博主都会定期的更新而且他们的文章都很不错.下面是博客列表: 1.首先第一个肯定是毋庸置疑的Planet Python这是最出名的python博客其中之一,快去看看,我希望你能找到对你有用的东西,昨天它还更新了呢! 2.第二个博客是lucumr,博主是flask的创始人(

值得关注的10个python语言博客

大家好,还记得我当时学习python的时候,我一直努力地寻找关于python的博客,但我发现它们的数量很少.这也是我建立这个博客的原因,向大家分享我自己学到的新知识.今天我向大家推荐10个值得我们关注的python博客,这些博客的博主都会定期的更新而且他们的文章都很不错.下面是博客列表: 1.首先第一个肯定是毋庸置疑的Planet Python这是最出名的python博客其中之一,快去看看,我希望你能找到对你有用的东西,昨天它还更新了呢! 2.第二个博客是lucumr,博主是flask的创始人(

用python爬博客

用python爬博客 by 伍雪颖 以爬王垠的博客为例: import re import urllib2 def getHtmlCode(url): return urllib2.urlopen(url).read() def findTitleUrl(htmlString): regTitleUrl = re.compile("href=\"(.+?)\"") return regTitleUrl.findall(htmlString) def findTitl

关于编写技术博客的个人看法

为什么我们要写博客? 不仅仅是分享,更是总结,把我们平时散落的知识点,通过文章的形式归纳总结,形成一个树状记忆.帮助我们更加牢固的记忆所学知识. 缺点 耗费时间 优点 消磨时光 培养语言组织能力 知识归纳能力 方便随时翻阅 如何写好一篇技术博客呢? 纯属个人理解哈. 一遍博客,相当于是一个主题,那么我们所需要做的事情就是把这个主题描述清楚. 关于描述一个事物就有非常多的技巧了.大致总结了一套书写框架,供参考 [前言] 用一段文字来描述下今天即将要学习的东西,当然也可以聊点其它的... [正文]

价值博客们,技术博客

www.raychase.net http://mindhacks.cn 程序员博客墙blogwall.us http://www.cppblog.com/vczh MacTalk-池建强的随想录 Fenng DBA Notes | 闲思录robbin的自言自语风雪之隅-Laruence的博客 blog.vgod.tw 张琮翔的Blog:愛好電腦.科技.程式設計,目前在MIT電腦科學與人工智慧實驗室就讀博士班,尋找人機互動與程式設計交會的創新火花. MIT CSAIL的PhD,现在毕业开始创业了

[转]有哪些值得关注的技术博客(Java篇)

有哪些值得关注的技术博客(Java篇) 大部分程序员在自学的道路上不知道走了多少坑,这个视频那个网站搞得自己晕头转向.对我个人来说我平常在学习的过程中喜欢看一些教程式的博客.这些博客的特点: 1.总结知识点相对比较全面 2.一般来说讲解知识点通俗易懂 3.路线比较清晰,不会有太多的冗余内容. 这样一来,对于自学的朋友来说,一些专业的博客不但大量的缩减了你得学习时间.提高了学习效率.更重要的是这些博客能培养你对编程的兴趣. 于是,这几期文章会主要推荐一些技术博客,目前计划打算主要分为: (已完) 

【技术博客】Django中文件下载的实现

开发组在开发过程中,都不可避免地遇到了一些困难或问题,但都最终想出办法克服了.我们认为这样的经验是有必要记录下来的,因此就有了[技术博客]. Django中文件下载的实现 1.背景 在VisualPytorch项目中,当时需要提供一个文件下载的功能.最初想到的方案主要有一下三种 直接把网页前端的字符串写入文件中,在客户端完成. 这个方案经过查找资料发现不同浏览器的同源策略以及安全策略不尽相同,难以实现,放弃. 在服务器上再开一个ftp服务器系统地提供文件服务. 这是最开始的思路,后来根据实际需求

一系列国内外顶尖互联网公司的技术博客,晋升程序员必备!

顶尖公司是大多数程序员都梦寐以求进入的地方,但是技术不行怎么办?学啊!这里收集了一系列国内外顶尖互联网公司的技术博客,好好给自己充充电! 国内技术博客列表 腾讯游戏 DBA 团队 http://tencentdba.com 腾讯互娱游戏 DBA 团队一直致力于为游戏提供稳定.高效的 DB 运营服务.现有的 MySQL 社区版已经不能满足快速发展中的游戏业务需求.于是该团队在 MySQL 5.5 基础上,开发和维护了 MySQL 的新分支 TenDB. 腾讯 AlloyTeam http://ww

个人技术博客的选择:CSDN、博客园、简书、知乎专栏还是Github Page?(转)

个人技术博客的选择:CSDN.博客园.简书.知乎专栏还是Github Page? 有很多技术人员在学习到一定程度后发现了写博客的重要性,一方面帮助自己记忆,一方面也能帮助他人解决问题,于是会选择自己开始写博客,之后又发现平台太多不知从何下手,在这里我根据自己写博客的经验比较一下各个平台的优缺点. 这里主要对比CSDN.博客园.简书.知乎专栏.Github Page.个人建站和其他 CSDN 笔者是CSDN的长期用户,也见到了很多不错的CSDN博客 优点 SEO做得好,无论是百度还是google(