# -*- coding: utf-8 -*-
import subprocess
import time
from pathlib import Path

import frida

ADB = r"C:\Users\Administrator\AppData\Local\Android\Sdk\platform-tools\adb.exe"
PKG = "my.com.tngdigital.ewallet"
SCRIPT = Path(__file__).with_name("trace_tng_diag_exit.js").read_text(encoding="utf-8")


def adb(*a):
    return subprocess.run([ADB, *a], capture_output=True, text=True)


def on_msg(m, d):
    if m.get("type") == "send":
        print(m["payload"], flush=True)
    else:
        print(m, flush=True)


def main():
    adb("shell", "am", "force-stop", PKG)
    time.sleep(0.5)
    d = frida.get_usb_device(10)
    pid = d.spawn([PKG])
    s = d.attach(pid)
    sc = s.create_script(SCRIPT)
    sc.on("message", on_msg)
    sc.load()
    print("resume", pid, flush=True)
    d.resume(pid)
    for i in range(15):
        time.sleep(1)
        p = adb("shell", "pidof", PKG).stdout.strip()
        print("t=%ds pid=%s" % (i + 1, p or "DEAD"), flush=True)
        if not p:
            break
    try:
        s.detach()
    except Exception:
        pass


if __name__ == "__main__":
    main()
