[Pythonの] [技術ブログ] Pythonで書かれたアプリケーションのログ操作の電話番号を取得します

Pythonで書かれたいくつかは、電話アプリケーションの操作ログを取得します

  1. 携帯電話のパッケージ名現在開いているアプリを入手する方法
  2. 現在のプロセスアプリケーションのPIDを入手する方法
  3. 現在のログのAppを表示する方法
  4. ログをファイルに保存する方法
  5. プロセスをオフにする方法
  6. コマンドラインウィンドウは表示されませんどのように

1.携帯電話のパッケージ名現在開いているアプリを入手する方法

コマンドラインに直接入力することができます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.現在のプロセスのPIDアプリを入手する方法

コマンドラインコマンドで直接入力adb shell "ps | grep com.tencent.mobileqq"するすべてのアプリケーションが情報を処理し、いくつかのアプリケーションのみで一つのプロセス、いくつかのアプリケーションの複数のプロセスが存在することになる得ることができます。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メソッドやgrepADB 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)

我々はまた、上記の警告限り、ログなどの制約、することができ

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

二つの方法があります

Aは、コマンドに直接添加され> 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

STARTUPINFOでサブプロセスを変更することにより

st = subprocess.STARTUPINFO
st.dwFlags = subprocess.STARTF_USESHOWWINDOW
st.wShowWindow = subprocess.SW_HIDE
cmd = subprocess.Popen(command, startupinfo=st)

おすすめ

転載: www.cnblogs.com/bhlt1998/p/10980826.html