1

monkeyrunner から AndroidViewClient に切り替えています。すべてPythonなのでいいです。ただし、type コマンドまたは press コマンドを発行する場合、各コマンド間のラグは 1 秒程度です。

import sys
import os
import time
try:
    sys.path.append(os.path.join(os.environ['ANDROID_VIEW_CLIENT_HOME'], 'src'))
except:
    pass

from com.dtmilano.android.adb.adbclient import AdbClient, Device        

device.type("hello")
# type a space
device.press('KEYCODE_SPACE', 'DOWN_AND_UP')
device.type("world")

上記の monkeyrunner のコードでは、文字どおり「プレス」と「タイプ」の間に遅延がありません。AdbClient でこの遅延が発生するのはなぜですか? adbシェルを経由していませんか?速いはず…

注: "hello" と "world" の入力は高速です。各タイプのコマンド間に 1 秒の遅延があるだけです。

4

2 に答える 2

3

ディエゴの根本原因分析は間違っています。新しいシェル接続はそれほど高価ではありません。最も時間がかかるのは、新しい Java プロセスを開始することです。これは、device.type()実行中adb shell input textinputコンソール Java アプリであるためです。

Monkeyrunner は、デバイス側の Java プロセスが 1 回だけ開始されるため、高速です。残念ながら、永続的なシェル接続はそれほど役に立ちません。

また、Javaアプリの起動時間に役立つことDalvikを期待して、Javaランタイムを切り替えようとしました。ARTそれはそれを約20%削減しました(私が試したユニットでは0.82秒から0.65秒まで)。

于 2014-06-04T23:26:35.263 に答える