日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

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

發(fā)布時間:2025/3/20 python 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python操作手机app_【Python】[技术博客] 一些使用Python编写获取手机App日志的操作... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一些使用Python編寫獲取手機App日志的操作

如何獲取手機當前打開的App的包名

如何獲取當前App進程的PID

如何查看當前App的日志

如何將日志保存到文件

如何關(guān)閉進程

如何不顯示命令行窗口

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" 可以得到這個應(yīng)用所有的進程信息,有的App只有一個進程,有些App會有多個進程。這里注意 grep命令是在Linux 下使用的,如果想在Windows環(huán)境下使用,前后需要加上雙引號,否則會報錯。

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的日志

網(wǎng)上一些帖子都使用了find方法或者grep方法,這些在查找的時候都會附加一些其他的日志,通過查看adb logcat的幫助文檔,發(fā)現(xiàn)其中有一條

--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.如何關(guān)閉進程

運行代碼后,一共會打開兩個進程, 一個是 cmd.exe,第二個是adb.exe,都要關(guān)閉

log = subprocess.Popen(command)

##關(guān)閉

try:

log.terminate() #關(guān)閉 cmd.exe

os.popen("adb kill-server") #關(guān)閉 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)

總結(jié)

以上是生活随笔為你收集整理的python操作手机app_【Python】[技术博客] 一些使用Python编写获取手机App日志的操作...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。