簡單的自動化測試小程序(二)

2,如何在你的應用中執行ADB命令?java

    1)代碼實現:          linux

    execShellCmd("input tap 345 1236");
    private void execShellCmd(String cmd) {
    try {
        Process process = Runtime.getRuntime().exec("sh");
        OutputStream outputStream = process.getOutputStream();
        DataOutputStream dataOutputStream = new DataOutputStream(
                outputStream);
        dataOutputStream.writeBytes(cmd);
        dataOutputStream.flush();
        dataOutputStream.close();
        outputStream.close();
    } catch (Throwable t) {
        t.printStackTrace();
    }

     2)平臺簽名:android

        若是不簽名的話,應用執行到這裏是沒有效果的。app

        簽名須要三個文件:platform.x509pem和platform.pk8在源碼\build\target\product\security目錄下。signapk.jar在\out\host\linux-x86\framework目錄下。ui

        拷貝出來以後,將未簽名的apk放到相同的文件夾下,執行以下命令:debug

java -jar signapk.jar platform.x509.pem platform.pk8 須要簽名apk 簽名完成apkrest

 

      3)ADB命令擴展:orm

        上篇介紹的adb命令比較侷限,僅僅觸屏、按鍵。本小結強化一下。get

        am :input

        am start    am startservice        am stopservice       am force-stop  am kill am kill-all

       am broadcast     am instrument  am profile start  am profile stop am dumpheap    

        am set-debug-app  am clear-debug-app     am monitor    am hang      am restart

       am idle-maintenance    am screen-compat       am to-uri        am to-intent-uri 

       am switch-user  am stop-user am stack create  am stack movetask    am stack        resize     am stack boxes     am stack box 

        啓應用,啓服務,發廣播~功能好強,可是我就講一個例子:

        am 啓動相機!x度一搜命令就出來了。

        am start -n com.android.camera/com.android.camera.Camera

        也許這條指令在你的設備上能啓動相機,可是在個人設備上執行以後,啥都沒啓動~why?難不成被騙了?查看am後面的參數包star -n 包名/包名.活動名。看看上面的參數,沒問題啊。再拿一個已知包名和活動名的應用驗證了一下,確實能起來。這樣問題就能肯定了,是我設備上關於相機的包名或者是活動名字不對。

        接下來是怎麼查看到正確的包名和活動名字,使用以下命令,dumpsys usagestats 是用來記錄打開了程序的哪些activity次數和時間一類信息的,因此包名活動名什麼的一覽無遺。        

            dumpsys usagestats | grep cam

 

        將全部包含cam的信息都顯示出來

        com.android.camera2: 32 times, 8695 ms

        com.android.camera.CameraActivity: 32 starts

 

          如此一來就確認是包名活動名都不對,因此正確的命令應該是

        am start -n   com.android.camera2/com.android.camera.CameraActivity

                                                                                    ----to be continued

相關文章
相關標籤/搜索