天天看點

android通過指令行啟動app-

執行自動化測試時我們都必須先開啟 App 後才開始才進行測試,開啟 App 的動作我們可以透過 adb(Android Debug Bridge) 指令來幫我們完成,指令如下所示:

adb shell am start -n [PACKAGE-NAME]/[ACTIVITY-NAME] # adb shell am start -n <com.package.name>/<com.package.name.ActivityName>

其中 PACKAGE-NAME 參數的部分,我們可以通過以下指令來得知 App 的 package name。

adb shell pm list packages -f

接著 ACTIVITY-NAME 參數則可通過以下指令來檢視,它就可以列出所有正在執行 App 的 Activity 名稱。

adb shell dumpsys activity

包名和Activity類的類名一定要輸入正确,但是要注意隻能列出正在執行的App 的 Activity 名稱,如果你的app沒有在執行是看不到的。我們可以進入AndroidManifest.xml檔案進行檢視,還有一個辦法可以通過安裝aapt來擷取app資訊。還可以用re-sign工具(在最後的彈出資訊框會顯示出包名和Activity類名)。如下:

aapt dump badging com.google.android.apps.maps-1.apk      # aapt dump badging <path-to-apk>

下面我們來看下adb shell am指令的幫助

usage: am [subcommand] [options]

    start an Activity: am start [-D] [-W] <INTENT>

        -D: enable debugging

        -W: wait for launch to complete

    start a Service: am startservice <INTENT>

    send a broadcast Intent: am broadcast <INTENT>

    start an Instrumentation: am instrument [flags] <COMPONENT>

        -r: print raw results (otherwise decode REPORT_KEY_STREAMRESULT)

        -e <NAME> <VALUE>: set argument <NAME> to <VALUE>

        -p <FILE>: write profiling data to <FILE>

        -w: wait for instrumentation to finish before returning

    start profiling: am profile <PROCESS> start <FILE>

    stop profiling: am profile <PROCESS> stop

    <INTENT> specifications include these flags:

        [-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>]

        [-c <CATEGORY> [-c <CATEGORY>] ...]

        [-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE> ...]

        [--esn <EXTRA_KEY> ...]

        [--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> ...]

        [-e|--ei <EXTRA_KEY> <EXTRA_INT_VALUE> ...]

        [-n <COMPONENT>] [-f <FLAGS>]

        [--grant-read-uri-permission] [--grant-write-uri-permission]

        [--debug-log-resolution]

        [--activity-brought-to-front] [--activity-clear-top]

        [--activity-clear-when-task-reset] [--activity-exclude-from-recents]

        [--activity-launched-from-history] [--activity-multiple-task]

        [--activity-no-animation] [--activity-no-history]

        [--activity-no-user-action] [--activity-previous-is-top]

        [--activity-reorder-to-front] [--activity-reset-task-if-needed]

        [--activity-single-top]

        [--receiver-registered-only] [--receiver-replace-pending]

        [<URI>]

adb停止 應用程式

adb shell am force-stop   cn.com.conversant.swiftsync.android 備注: cn.com.conversant.swiftsync.android為包名。

比如關閉浏覽器程序:adb shell am kill-all com.android.browser