gpt4 book ai didi

android - 通过 eclipse/java 将 logcat 输入发送到 monkeyrunner 会导致问题

转载 作者:行者123 更新时间:2023-11-29 00:37:18 26 4
gpt4 key购买 nike

我正在开发一种工具来识别 Android 应用程序中的小部件,并在单击时显示它们的属性。我已经创建了一个可以成功执行此操作的独立工具,但是我在将独立工具转换为 eclipse 插件时遇到了问题,这将是打包到我们最终产品中所必需的。

该工具的运行方式是,首先在模拟器上运行一个透明覆盖应用程序。此应用程序收集用户屏幕按下的坐标并将其写入 Android 日志。然后,在模拟器上启动要测试的应用程序。

Adb logcat 作为标准输入通过管道传输到处理小部件识别的 monkeyrunner 脚本中。 monkeyrunner 脚本会实时解析 logcat 输入以获取坐标新闻信息。 monkeyrunner 脚本使用 AndroidViewClient (https://github.com/dtmilano/AndroidViewClient),这是一种可以列出屏幕上所有 View 对象及其属性的工具。使用坐标新闻信息,从 View 列表中挑选出具有正确坐标属性的 View ,并打印出其属性。

我遇到的问题源于尝试在 eclipse/java 的上下文中处理 logcat 输出到 monkeyrunner 脚本的管道。如果我在单独的并发进程中运行 adb logcat 和 monkeyrunner,并将 logcat 的 InputStream 传输到 monkeyrunner 的 OutputStream,似乎存在一些锁定问题,因为 monkeyrunner 从不接收坐标信息作为输入。我也尝试将流处理程序放在单独的线程中,但这没有效果。

由于并发进程有时会成为问题的根源,我想直接在 monkeyrunner 中从 logcat 读取,从而只有一个主进程。在 monkeyrunner 中,一旦与模拟器建立连接,就可以在其上打开 adb shell (https://developer.android.com/tools/help/MonkeyDevice.html#shell)。 Logcat 是一个非常常见的 adb 命令,但是当我运行 device.shell("logcat") 时,它失败并显示

    [main] [com.android.chimpchat.adb.AdbChimpDevice] Error executing command: logcat

    [main] [com.android.chimpchat.adb.AdbChimpDevice]com.android.ddmlib.ShellCommandUnrespo‌​nsiveException – 

不幸的是,我的 google 技能未能找到解决此问题的方法。

最佳答案

好吧,我想这就是您要找的:

#! /usr/bin/env monkeyrunner
import time
import subprocess

# Imports the monkeyrunner modules
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage

# Connects to the current device, returning a MonkeyDevice object
device = MonkeyRunner.waitForConnection()

p = subprocess.Popen([ "adb", "logcat", "TEST:V", "*:S" ], shell=False,
stdout=subprocess.PIPE)
i = 0
while True:
device.shell("log -t TEST This is line %d" % i)
i += 1
print p.stdout.readline()
time.sleep(1)

连接到设备、写入和读取 logcat 的 monkeyrunner 脚本。

顺便说一句,我很高兴听到你找到了AndroidViewClient有用。

关于android - 通过 eclipse/java 将 logcat 输入发送到 monkeyrunner 会导致问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11785558/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com