本文主要分享adb 設備管理、本地/遠程設備文件拷貝、shell中am的常用操作,如有錯誤,歡迎指正。
更多Android技術分享可以關注我的Android技術圈子,也可以加入QQ群號:690347536,學習交流Android開發技能。
一、將命令發送至特定設備
如果有多個設備在運行,adb命令必須指定目標設備,用-s 指定目標設備:
比如:
adb -s emulator-5555 install helloWorld.apk
[-e] 有多個設備但只有一個是模擬器
[-d] 有多個設備但只有一個是硬件設備
注意:如果您在多個設備可用時發出命令但未指定目標設備,adb 會生成錯誤。
二、安裝apk\卸載apk
安裝apk常用命令:
adb install pathOfAPK
[-r] 不用卸載直接覆蓋安裝
[-t] 安裝未簽名apk
[-l] 鎖定應用程序
[-d] 允許降級覆蓋安裝
[-p] 部分應用安裝(僅分包應用可安裝)
[-g] 為應用程序授予所有運行時的權限
卸載apk常用命令:
adb uninstall packageName
[-k] 保留緩存數據
三、將文件復制到設備/從設備復制文件
從設備中復制某個文件或目錄(及其子目錄)
adb pull remote local
將某個文件或目錄(及其子目錄)復制到設備
adb push local remote
將 local
和 remote
替換為開發機器(本地)和設備(遠程)上的目標文件/目錄的路徑
四、停止/啟動 adb 服務
adb kill-server
adb start-server
五、執行shell命令
- 執行shell:
adb [-d |-e | -s serial_number] shell [shell_command]
- 退出shell
exit
- 啟動Activity
am start [options] <intent>
例子:
am start -a android.intent.action.View 隱式調用具有瀏覽器功能的應用
am start -n com.android.camera2/com.android.camera.CameraActivity 打開相機
[options]支持的參數如下:
命令 | 說明 |
---|---|
-D | 啟用調試功能 |
-W | 等待啟動完成 |
--start-profiler file | 啟動性能剖析器并將結果發送至 file
|
-P file | 類似于 --start-profiler ,但當應用進入空閑狀態時剖析停止 |
-R count | 重復啟動 Activity count 次。在每次重復前,將完成頂層 Activity |
-S | 在啟動 Activity 前,強行停止目標應用 |
--opengl-trace | 啟用 OpenGL 函數的跟蹤 |
--user user_id | 指定要作為哪個用戶運行;如果未指定,則作為當前用戶運行 |
- 啟動service
am startservice [options] <intent>
5.啟動broadcast
am broadcast [options] <intent>
intent 常用參數的規范
-a action
指定 intent 操作,如 android.intent.action.VIEW
。只能聲明一次。
-d data_uri
指定 intent 數據 URI,如 content://contacts/people/1
。只能聲明一次。
-t mime_type
指定 intent MIME 類型,如 image/png
。只能聲明一次。
-c category
指定 intent 類別,如 android.intent.category.APP_CONTACTS
。
-n component
指定帶有軟件包名稱前綴的組件名稱以創建顯式 intent,如 com.example.app/.ExampleActivity
。
-f flags
向 setFlags()
支持的 intent 添加標記。
--esn extra_key
添加一個空 extra。URI intent 不支持此選項。
-e | --es extra_key extra_string_value
以鍵值對的形式添加字符串數據。
--ez extra_key extra_boolean_value
以鍵值對的形式添加布爾值數據。
--ei extra_key extra_int_value
以鍵值對的形式添加整數型數據。
--el extra_key extra_long_value
以鍵值對的形式添加長整型數據。
--ef extra_key extra_float_value
以鍵值對的形式添加浮點型數據。
--eu extra_key extra_uri_value
以鍵值對的形式添加 URI 數據。
--ecn extra_key extra_component_name_value
添加組件名稱,該名稱作為 ComponentName
對象進行轉換和傳遞。
--eia extra_key extra_int_value[,extra_int_value...]
添加整數數組。
--ela extra_key extra_long_value[,extra_long_value...]
添加長整數數組。
--efa extra_key extra_float_value[,extra_float_value...]
添加浮點數數組。
--grant-read-uri-permission
添加 FLAG_GRANT_READ_URI_PERMISSION
標記。
--grant-write-uri-permission
添加 FLAG_GRANT_WRITE_URI_PERMISSION
標記。
--debug-log-resolution
添加 FLAG_DEBUG_LOG_RESOLUTION
標記。
--exclude-stopped-packages
添加 FLAG_EXCLUDE_STOPPED_PACKAGES
標記。
--include-stopped-packages
添加 FLAG_INCLUDE_STOPPED_PACKAGES
標記。
--activity-brought-to-front
添加 FLAG_ACTIVITY_BROUGHT_TO_FRONT
標記。
--activity-clear-top
添加 FLAG_ACTIVITY_CLEAR_TOP
標記。
--activity-clear-when-task-reset
添加 FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET
標記。
--activity-exclude-from-recents
添加 FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
標記。
--activity-launched-from-history
添加 FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY
標記。
--activity-multiple-task
添加 FLAG_ACTIVITY_MULTIPLE_TASK
標記。
--activity-no-animation
添加 FLAG_ACTIVITY_NO_ANIMATION
標記。
--activity-no-history
添加 FLAG_ACTIVITY_NO_HISTORY
標記。
--activity-no-user-action
添加 FLAG_ACTIVITY_NO_USER_ACTION
標記。
--activity-previous-is-top
添加 FLAG_ACTIVITY_PREVIOUS_IS_TOP
標記。
--activity-reorder-to-front
添加 FLAG_ACTIVITY_REORDER_TO_FRONT
標記。
--activity-reset-task-if-needed
添加 FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
標記。
--activity-single-top
添加 FLAG_ACTIVITY_SINGLE_TOP
標記。
--activity-clear-task
添加 FLAG_ACTIVITY_CLEAR_TASK
標記。
--activity-task-on-home
添加 FLAG_ACTIVITY_TASK_ON_HOME
標記。
--receiver-registered-only
添加 FLAG_RECEIVER_REGISTERED_ONLY
標記。
--receiver-replace-pending
添加 FLAG_RECEIVER_REPLACE_PENDING
標記。
-
--selector
需要使用-d
和-t
選項設置 intent 數據和類型。
- 停止進程
am force-stop package 強行停止與package相關的所有進程
am kill [options] package 終止與 `package`(應用的軟件包名稱)關聯的所有進程
此命令僅終止可安全終止且不會影響用戶體驗的進程
am kill-all 終止所有后臺進程
更多Android技術分享可以關注我的Android技術圈子,也可以加入QQ群號:690347536,學習交流Android開發技能。