0

UiautomatorTestcase クラスを使用してメイン アクティビティのスクリーンショットをキャプチャしているときに、次の例外に直面しています。

私が使用しているサンプルコード

public class MyActivityTest extends UiAutomatorTestCase {

    public UiautomatorAdaptxt() {
        // TODO Auto-generated constructor stub
    }

    @Override
    protected void setUp() throws Exception {
        // TODO Auto-generated method stub
        super.setUp();

    }

    public void testOpenMainActivity() throws UiObjectNotFoundException {
        -->Here I use the code to open my Activity<--
        getUiDevice().takeScreenshot(storePath);
    }
}

私が直面している例外は

java.lang.NoSuchMethodError: com.android.uiautomator.testrunner の java.lang.reflect.Method.invokeNative(Native Method) の .testOpenMainActivity(MyActivityTest .java:31) の com.android.uiautomator.core.UiDevice.takeScreenshot。 com.android.uiautomator.testrunner.UiAutomatorTestRunner.run(UiAutomatorTestRunner.java:8 5) で UiAutomatorTestRunner.start(UiAutomatorTestRunner.java :124) com.android.commands.uiautomator.RunTestCommand.run(RunTestCommand.java:76) でcom.android.commands.uiautomator.Launcher.main(Launcher.java:83) com.android.internal.os.RuntimeInit.nativeFinishInit(ネイティブメソッド) com.android.internal.os.RuntimeInit.main(RuntimeInit.java) :235) dalvik.system.NativeStart.main(ネイティブ メソッド) で

4

1 に答える 1

2

この方法でスクリーンショットを撮るには、Android 4.2 以降のデバイスが必要です。

これはtakeScreenshot、Android 4.2 または API レベル 17 でターゲットが呼び出されるようにメソッドが追加されたためです。

公式ドキュメントを参照してください。

ローカル マシンでコンパイルすると、このメソッドを含む android-17 以降に対してコンパイルされるため、コンパイルは成功します。ただし、android-16 でターゲット Android デバイスにデプロイすると、このメソッドが欠落します。テスト コードがこのメソッドを呼び出そうとすると、NoSuchMethodError例外がスローされます。

回避策として、次のように adb を使用してスクリーンショットを撮ることができます

adb shell screencap -p /data/local/tmp/screen-capture.png
adb pull /data/local/tmp/screen-capture.png <localfile.png>
adb shell rm /data/local/tmp/screen-capture.png
于 2013-07-28T19:41:22.733 に答える