简单的自动化测试小程序(二)

2,如何在你的应用中执行ADB命令?

    1)代码实现:          

    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)平台签名:

        如果不签名的话,应用执行到这里是没有效果的。

        签名需要三个文件:platform.x509pem和platform.pk8在源码\build\target\product\security目录下。signapk.jar在\out\host\linux-x86\framework目录下。

        拷贝出来之后,将未签名的apk放到相同的文件夹下,执行如下命令:

java -jar signapk.jar platform.x509.pem platform.pk8 需要签名apk 签名完成apk

 

      3)ADB命令扩展:

        上篇介绍的adb命令比较局限,仅仅触屏、按键。本小结强化一下。

        am :

        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

    原文作者:移动开发
    原文地址: https://my.oschina.net/shaula/blog/678637
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞