常用的adb命令
在平時的工作中,會經常用到adb命令,在這里稍微整理了一下。
一.概要
1.什么是adb?
adb全稱為Android Debug Bridge,就是起到調試橋的作用。顧名思義,adb就是一個debug工具。
2.adb工作原理
不是很理解?那就來看看它的工作原理吧。
上圖是一個簡單的adb工作原理圖。adb客戶端服務器端程序,由上圖可以看出它主要三個組件組成:Client,Server,Daemon。
(1)當你啟動一個adb Client(客戶端),Client首先會選確認是否已有一個adb
Server(服務器)進程在運行,如果沒有,則會啟動Server進程。此時,adb Server就會綁定本地的TCP端口5037,并監聽adb
Client發來的命令。
(2)接著,Server將會掃描所有5555到5585范圍內的奇數端口來定位所有的模擬器或設備,并與之建立連接。一旦Server找到
了adb
daemon(守護程序),它將建立一個到該端口的連接,這樣,我們就可以使用adb命令控制和訪問模擬器或設備了。在這里,需注意的是任何模擬器或設備實例會取得兩個連續的端口:一個偶數端口用來相應控制臺的連接,和一個奇數端口用來響應adb連接。
3.adb的作用
借助adb工具,我們可以管理設備或手機模擬器的狀態,還可以進行很多手機操作,如安裝軟件、系統升級、運行shell命令等等。簡而言之,adb就是連接Android手機和PC端的橋梁,可以讓用戶在電腦上對手機進行全面的操作。
二.常用命令
這個部分主要介紹adb的使用方法和一些常用的命令。
設置adb環境:將android sdk工作目錄添加到系統環境變量中,則可使用adb命令了。
1. adb devices
查看當前連接的設備(連接計算機的Android設備或者模擬器)。
2.adb install
adb install <apk文件路徑>,將指定的apk安裝到設備上,安裝的apk包會放在/data/app目錄下。
幾個參數:
-r 強制安裝
-d(真機,多個設備中只有一個真機時適用)
-e(模擬器,多個設備中只有一個模擬器時適用)
-s(指定設備,后接序列號)
adb –s 44a188f9 install –r test.apk(其中44a188f9即序列號,通過adb devices可獲取)
3.adb uninstall
adb uninstall <apk包名>
adb uninstall –k <apk包名>
-k參數為卸載軟件時保留配置和緩存文件
4.adb reboot
重啟android設備
5.adb shell
通過adb shell 命令,就可以進入設備或者模擬器的shell環境了,在這個Linux shell中,我們就可以執行各種Linux命令了。
如果只想執行一條shell命令,就可以采用:adb shell [shell_command]
在實際使用中,經常與grep或findstr一起使用,起到過濾作用,查看自己需要的關鍵信息。
6.adb shell su
前提手機已經root。獲取adb shell的root權限。
使用su提權,用戶命令提示符有$變成#,如果手機沒有root,會提示su:permission denied。
7.adb shell ps/top
查看當前終端中的進程信息,如pid等。
8.adb shell am/pm
am全稱為activity manager,可使用am命令模擬各種系統的行為,如去啟動一個activity,強制停止進程,發送廣播進程,修改設備屏幕屬性等。
如:adb shell am start <apk包名>/<activityName>:啟動一個activity。
pm全稱為package manager,利用pm命令可模擬android行為或查詢設備上的應用等。
如:adb shell pm list packages
列出當前設備所有已安裝的程序的包名。
說明:
管道符“|”:可以把標準的輸入流與標準的輸出流進行合并,或者把某個命令的標準輸出流作為另一個命令的標準輸入流。
exit退出shell。
由于grep為linux命令,運行單條adb shell 時并沒有進入linux
shell環境,并不能用grep等其他linux命令,只能用window cmd的命令。在這里可以用findstr來代替grep,使用方法為
findstr/grep [keyword]
更詳細的內容可查看 參考文獻3 和 參考文獻4 。
對于常用的linux命令和常用的windows 控制臺命令,以后再作總結。
9.adb pull 和 adb push
adb pull <設備中的文件路徑> <本地路徑>:從模擬器或設備中復制文件到本地。
adb push <本地文件路徑> <設備中的路徑>:將本地文件或目錄復制到模擬器或設備。
這里還涉及到一個權限的問題,在后續的博文中再作介紹。
10.adb shell dumpsys
Android提供的dumpsys工具用于查看感興趣的系統服務信息與狀態。
參考下表:
11.adb shell monkey
跑monkey是android自動化測試的一種手段,所謂monkey測試就是模擬用戶的按鍵輸入,觸摸屏輸入,手勢輸入等。當Monkey程序在模擬器或設備運行的時候,如果用戶比如點擊,觸摸,手勢或一些系統級別的事件的時候,它就會產生隨機脈沖,所以可以用Monkey的隨機重復的方法對apk作壓力測試,來測試android
app的穩定性。
如下為測試騰訊新聞apk的一個簡單實例:
說明:第一個-s指定設備,如果只連接了一臺設備,可不用該參數。
-p <apk包名>只允許系統啟動指定的app,如果不指定,將允許系統啟動設備中的所有app,也可指定多個包。
--throttle <毫秒數> 指定用戶操作(事件)間的時延。
--ignore-crashes 指定當應用程序崩潰時,Monkey依然發送事件,直到事件計數完成。
--ignore-timeouts 當應用程序發生ANR錯誤時,Monkey依然會發送事件,直到事件計數完成。
第2個-s,用于指定偽隨機數生成器的ed值,如果ed相同,則兩次Monkey測試所產生的事件序列也相同的。
-v 用于指定反饋信息級別,總共分為level 0、level 1、level 2三個級別,級別越高,輸出的日志越詳細。
最后的數字(這里是500):表示Monkey程序模擬500次隨機用戶操作事件。
>輸出測試結果到D:\monkeylog.txt
更詳細的參數可查看 參考文獻5 。
部分測試結果如下:
對于測試結果的分析,通過搜索關鍵詞來定位錯誤,主要包括以下四個方面:
1)ANR(Application Not
Respon):程序無響應,一般主線程超過5秒沒處理就會出現ANR錯誤。通過搜索ANR關鍵詞來定位關鍵的事件信息。除了導出日志外,還可以將/data/anr/目錄下的trace.txt文件導出,用來定位分析問題。使用>adb
pull /data/anr/trace.txt d:\ 將trace.txt文件導出到d盤。
2)ForceClod或其他異常退出信息:通過搜索Fatal關鍵詞來定位。
3)崩潰問題:通過搜索Exception關鍵詞來定位。
4)發生異常后,通過搜索Crash關鍵詞來定位到詳細的堆棧信息。
12.kill
kill用來中止一個進程。
比如我們在跑monkey的時候,怎么強制關閉monkey呢,可以用kill <monkey進程PID>
說明:另開啟一個cmd,找到monkey的pid號,然后殺掉即可。
參考文獻:
1.Android調試橋: http://www.iteye.com/topic/260042
2.Android性能分析工具dumpsys的使用: http://www.open-open.com/lib/view/open1405061994872.html
3.adb shell 中的am pm命令: http://www.android100.org/html/201312/09/4957.html
4.adb shell 啟動應用程序的方法: http://blog.chinaunix.net/uid-26997997-id-3350449.html
5.Monkey壓力測試詳解: http://blog.csdn.net/huangbiao86/article/details/8490743
ADB 命令
查詢設備
adb devices
查詢手機中的用戶
adb shell pm list urs
查看設備上的應用包名:
adb shell pm list packages
adb shell pm list packages 打印設備/模擬器上的所有軟件包
adb shell pm list packages -f 輸出包和包相關聯的文件
adb shell pm list packages -d 只輸出禁用的包。由于本機禁用沒有,輸出為空。
adb shell pm list packages -e 只輸出啟用的包。
adb shell pm list packages -s 只輸出系統的包。
adb shell pm list packages -3 只輸出第三方的包。
adb shell pm list packages -i 只輸出包和安裝信息(安裝來源)。
adb shell pm list packages -u 只輸出包和未安裝包信息(安裝來源)
adb shell pm list packages -u -3 -e 組合使用
查詢帶有test的包名
adb shell pm list packages | findstr test
查詢安裝包路徑
adb shell pm path [PackageName]
查詢包對應的啟動activity
adb shell pm query-activities -a android.intent.action.MAIN -c android.intent.category.LAUNCHER [PackageName]
啟動應用
adb shell am start -n "[PackageName]/[ActivityName]" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
如:adb shell am start -n "com.example.test/com.example.test.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
卸載應用
adb shell pm uninstall -k --ur 0 [PackageName] -k 表示保存數據 --ur 指定用戶 id,Android 系統支持多個用戶,默認用戶只有一個,id=0
如 adb shell pm uninstall com.example.test 對所有用戶卸載com.example.test且不保存數據
停用應用
adb shell pm disable [PackageName]
啟用應用
adb shell pm enable [PackageName]
清除應用數據
adb shell pm clear [PackageName]
設置應用安裝位置
adb shell pm t-install-location
--[0/auto]:默認為自動
--[1/internal]:默認為安裝在手機內部
--[2/external]:默認安裝在外部存儲
獲取應用安裝位置
adb shell pm get-install-location
查詢操作過程中輸出的日志
adb logcat > d:\log.txt
ADB常用命令大全
安卓調試橋(Android Debug Bridge),是Android SDK中的一個調試工具, 使用adb可以直接操作管理Android模擬器或Andriod真機設備,在開發測試過程中,起到調試的作用。
adb.exe的存放路徑:Android-SDKplatform-tools
adb help //查看幫助
adb version //查看adb版本號
adb devices //查看設備
adb connect IP:port //連接設備
adb disconnect //斷開連接的所有設備
adb disconnect IP:port //斷開連接指定設備
adb root //獲取root權限
adb remount //重新掛載文件系統(默認只讀,執行命令后可寫)
adb install Package //安裝APK
adb install -r Package //強制覆蓋安裝
adb install -t Package //允許降級覆蓋安裝
adb install -d Package //允許測試包
adb uninstall PackageName //卸載APK
adb uninstall -k (keep) PackageName //保留用戶數據卸載
adb pull //將設備文件文件發送到PC
adb push //將PC文件發送到設備
adb logcat -c //清空日志
adb logcat -v threadtime >D:111.log //抓日志并輸出保存D:111.log
adb shell screencap /sdcard/screen.png //屏幕截圖(并存放sdcard目錄,命名screen.png)
adb shell screenrecord /sdcard/demo.mp4 //錄制屏幕(Android4.4以上可用)
adb shell dumpsys activity activities //查看activity信息
adb shell dumpsys activity |findstr mResumedActivity //獲取當前activity信息
adb shell dumpsys window windows | findstr “Current” //查看當前app窗口activity
adb shell //進入設備內部
cd //切換目錄
pwd //查看當前路徑
ping //查看網絡連接
rm* //刪除目錄下的所有文件
cp -r /path/filename /NewPath //拷貝文件
busybox find / -name FileName //查找文件
tcpdump -i any -p -s 0 -w /data/data/1111.pcap //抓取網絡包
pm uninstall PackageName //卸載APK
pm path PackageName //查看APK存放位置
pm clear PackageName //清除APK緩存
dumpsys package om.android.xxx //查看APK的具體信息
dumpsys package om.android.xxx | grep version //查看APK版本
dumpsys package com.tencent.mm | findstr versionName //查看APK版本
am start PackageName //拉起APK
am start -n com.android.xxx/.WelcomeActivity //直接拉起APK的指定WelcomeActivity
am start -a android.intent.action.VIEW -d http://www.baidu.com //拉起百度
am start -n om.android.xxx/.WelcomeActivity --es actionUrl "http://sns.is.xxxxx.com/CCTV/index.html?action=detail&object=5005153" //指定Activity上拉起H5
am force-stop + 報名 //殺死進程
kill `ps |grep -E "icntv|istv" | busybox awk '{print $2}'` //殺進程
md5 com.android.xxx //查看已安裝應用MD5
busybox vi hispreinstall.sh //編輯文件(命令行)
chmod 777 /system/bin/hispreinstall.sh //修改權限
cat /system/build.prop | grep "product" //查看設備信息
exit //退出shell交互模式
adb shell getprop ro.build.version.relea //查看Android系統版本
adb get-rialno //獲取手機序列號
adb shell dumpsys package //列出所有安裝應用的信息
adb shell pm list packages //查看設備中的所有應用的包名
adb shell cat/proc/cpuinfo //獲取CPU型號等信息(HardWare后面是CPU型號)
adb shell "ps | grep packageName" //查指定程序pid
adb shell getprop //查看手機信息
adb shell getprop ro.rialno //查看手機序列號
adb shell cat /proc/cpuinfo //查看手機CPU信息
adb shell cat /proc/meminfo //查看手機內存信息
adb reboot recovery //重啟手機到recovery刷機模式
adb reboot bootloader //重啟手機到bootloader界面
adb shell dumpsys battery //獲取電池信息
adb shell dumpsys battery t status 1 //設置手機進入非充電狀態,為2設置充電狀態
adb shell dumpsys battery t level 100 //設置電量百分比
adb shell dumpsys batterystats //獲取整個設備的電量消耗信息
adb shell dumpsys batterystats | more //綜合電量消耗
adb shell dumpsys batterystats com.android.xxx //獲取某個apk的電量消耗信息
adb shell dumpsys batterystats packageName | more //獲取指定程序電量消耗信息
adb shell cat /proc/uid_stat/$PID/tcp_snd //發送的數據流量
adb shell cat /proc/uid_stat/$PID/tcp_rcv //接收的數據流量
procrank //查看內存
adb shell top | findstr com.android.xxx //查看指定APK內存
top -n 3 |grep -E "com.android.xxx|android.yyy" //查看內存
adb shell dumpsys cpuinfo |findstr com.android.xxx //查看指定APK CPU
dumpsys cpuinfo |grep -E "com.android.xxx|android.yyy" //查看CPU
adb shell ttings put global http_proxy ip(PC):port(默認8888) //設置代理
adb shell ttings get global http_proxy //查看代理
adb shell sqlite3 /data/data/com.android.providers.ttings/databas/ttings.db //進入sqlite
delete from global where name in('global_http_proxy_host','global_http_proxy_port','http_proxy'); //移除代理
adb shell stop //關閉設備
adb shell start //開啟設備
adb start-rver //啟動adb服務
adb kill-rver //關閉adb服務
adb reboot //重啟手機
adb shutdown //關閉手機
1、首次使用USB線連接Android手機,然后打開Terminal輸入:adb tcpip 端口號(默認5555)
2、查看手機IP地址:設置->關于手機->狀態信息->IP地址
3、通過adb連接ip地址:adb connect IP:port
ADB常用命令
Android 調試橋 (adb) ,可與設備進行通信。adb 命令可用于執行各種設備操作(例如安裝和調試應用),并提供對 Unix shell(可用來在設備上運行各種命令)的訪問權限。它是一種客戶端-服務器程序,包括以下三個組件:
客戶端: 用于發送命令??蛻舳嗽陂_發機器上運行??梢酝ㄟ^發出 adb 命令從命令行終端調用客戶端。(可以通過它對Android應用進行安裝、卸載、調試)
PC上的手機助手基本都是通過adb命令去完成的。有時候裝了這類手機助手的話,它自帶的adb程序可能會與Android SDK下的adb程序產生沖突,5037端口被占用,導致adb命令無法連接到設備。Windows下通過netstat -ano|findstr "5037"
守護程序 (adbd): 用于在設備上運行命令。守護程序在每個設備上作為后臺進程運行
執行adb shell ps | grep adbd, 可以找到該后臺進程,Windows使用findstr替代grep.
adb nodaemon rver
服務器(Service): 用于管理客戶端與守護程序之間的通信。服務器在開發機器上作為后臺進程運行
adb服務啟動后,Windows可以在任務管理中找到adb.exe; linux ps -ef | gref adb 可以查看rvice
一般都是通過這樣子的格式 adb [-d|-e|-s <設備序列號>] <子命令>
通常只有一臺設備就忽略 [-d|-e|-s ] 這一部分
這里介紹一些常用的命令:
獲取設備列表及設備狀態
獲取設備的狀態
注意:設備的狀態有 3 鐘,device , offline , unknown
device:設備正常連接
offline:連接出現異常,設備無響應
unknown:沒有連接設備
結束 adb 服務
啟動 adb 服務
注意:通常兩個命令一起用,有時候我們開啟rver會失敗,這是因為我們裝了的手機助手,豌豆莢或者其他軟件自帶有自己的adb,導致端口沖突開啟失敗。一般在連接出現異常,使用 adb devices 未正常列出設備, 設備狀態異常時使用 kill-rver,然后運行 start-rver 進行重啟服務。
打印 Android 的系統日志
打印 dumpsys、dumpstate、logcat 的輸出,也是用于分析錯誤輸出比較多
打印日志后重定向到一個文件中
安裝應用,覆蓋安裝是使用 -r 選項
注意:有些adb版本無法支持安裝中文的apk
查看手機應用包名
查看應用對應的apk文件在手機上的安裝位置則可以在上面的命令后加-f參數
卸載應用,后面跟的參數是應用的包名,請區別于 apk 文件名
'-k' means keep the data and cache directories , -k 選項,卸載時保存數據和緩存目錄
將 Android 設備上的文件或者文件夾復制到本地
adb pull /sdcard/test.txt C:\Urs\Administrator\Desktop\log
推送本地文件至 Android 設備
獲取連接到的手機的序列號
獲取設備的連接狀態
等待設備連接成功
該命令將會阻塞一直到默認連接的那部機器狀態變為device,也就是連接成功。
其實adb shell命令就是調用的是Android設備中的system/bin目錄下的命令。
Android的內核本身就是Linux,所以Android本身也支持Linux命令,但是因為是手機系統,所以進行了一定的刪減,部分命令不支持,而不支持的部分,我們可以通過安裝busybox這個軟件進行。
如何在手機中執行Shell命令?
每次都加上adb shell來進行命令的發送與執行
先通過adb shell進入手機Shell執行狀態,然后直接輸入Linux命令。
使一個apk處于禁用狀態,相當于卸載了:
其中 PACKAGE_OR_COMPONENT的格式是 package/class, 如 com.UCMobile/.main.UCMobile
eg:adb shell su disable com.UCMobile/.main.UCMobile
同時我們在手機上發現,UC瀏覽器的圖標不見了
讓一個apk從禁用狀態恢復過來
其中 PACKAGE_OR_COMPONENT的格式是 package/class, 如 com.UCMobile/.main.UCMobileeg:
adb shell su enable com.UCMobile/.main.UCMobile
同時我們從手機上發現,UC瀏覽器的圖標又出現了。
查看一個apk所在的路徑
adb shell pm path com.UCMobile
查看手機中裝的所有的包
屏幕開始錄像并且儲存到/sdcard中,同時名字為demo.mp4
錄屏設置時長10s,命名為demo.mp4
注意:現在僅支持一部分手機錄屏,不支持的手機會出現以下提示
解決方法:
安裝了scrcpy之后,只需要輸入如下命令,即可錄取指定設備的屏幕
scrcpy -s device --render-expired-frames -Nr ./demo.pm4
--render-expired-frames:盡可能最大幀率
-N:不在PC端展示
-r:錄制mp4/mkv文件
關閉設備請求,開啟設備
設備關機以及重啟
pm(package manager)可以獲取一些安裝到Android設備上的app的信息
pm list packages 用法:list packages [ options] filter
獲取所有的應用的包名
列出系統應用
列出第三方應用
查看它們的關聯文件
adb shell pm list package -f
查看軟件包的安裝來源
pm dump 包名 很多dump信息
安裝應用
apk如果在電腦用 adb install
如果在Android設備上用 adb shell pm install
卸載應用,同adb uninstall ,后跟包名
清除應用數據
am(activity manager,字面意思就跟activity有關,大家都知道Android的界面都是由一個個activity顯示的)
啟動一個Activity
獲取到package和launch_activity
AndroidSDK中aapt工具,檢索命令結果,可以獲取到package和launch_activity
這里涉及到一個點,如何找到程序的入口,首先你要知道是哪個activity才能啟動;
啟動華為系統相機
打開音樂播放器
播放指定音樂:
先停止目標應用,再啟動
等待應用完成啟動
啟動網頁(android.intent.action.VIEW具體參考Android官網)
結束應用
input
模擬輸入,向獲得焦點的EditText控件輸入內容
返回主界面
發送一個點擊操作的指令,參數是<x> <y>坐標
從左往右滑動屏幕, /從 100 100 經歷300毫秒滑動到 200 200
長按操作,在 100 100 位置長按 1000毫秒
常用的adb命令
Android Debug Bridge,我們一般簡稱為adb,主要存放在sdk安裝目錄下的platform-tools文件夾中,它是一個非常強大的命令行工具,通過這個工具你能夠與你的android設備進行交互,被稱為Android 調試橋。
它是一種客戶端-服務器程序,包括以下三個組件:
adb shell 命令
adb shell 則是調用的 Android 系統中的命令,這些 Android 特有的命令都放在了 Android 設備的 system/bin 目錄下
monkey命令
當您啟動某個 adb 客戶端時,該客戶端會先檢查是否有 adb 服務器進程正在運行。如果沒有,它會啟動服務器進程。服務器在啟動后會與本地 TCP 端口 5037 綁定,并監聽 adb 客戶端發出的命令 - 所有 adb 客戶端均通過端口 5037 與 adb 服務器通信。
然后,服務器會與所有正在運行的設備建立連接。它通過掃描 5555 到 5585 之間(該范圍供前 16 個模擬器使用)的奇數號端口查找模擬器。服務器一旦發現 adb 守護程序 (adbd),便會與相應的端口建立連接。請注意,每個模擬器都使用一對按順序排列的端口 - 用于控制臺連接的偶數號端口和用于 adb 連接的奇數號端口。例如:
模擬器 1,控制臺:5554
模擬器 1,adb:5555
模擬器 2,控制臺:5556
模擬器 2,adb:5557
依此類推
如上所示,在端口 5555 處與 adb 連接的模擬器與控制臺監聽端口為 5554 的模擬器是同一個。
服務器與所有設備均建立連接后,您便可以使用 adb 命令訪問這些設備。由于服務器管理與設備的連接,并處理來自多個 adb 客戶端的命令,因此您可以從任意客戶端(或從某個腳本)控制任意設備。
要在通過 USB 連接的設備上使用 adb,您必須在設備的系統設置中啟用 USB 調試 (位于 開發者選項 下)。
在搭載 Android 4.2 及更高版本的設備上,“開發者選項”屏幕默認情況下處于隱藏狀態。如需將其顯示出來,請依次轉到 設置 > 關于手機 ,然后點按 版本號 七次。返回上一屏幕,在底部可以找到 開發者選項 。
在某些設備上,“開發者選項”屏幕所在的位置或名稱可能有所不同。
執行 adb devices 驗證設備是否已連接。如果已連接,您將看到設備名稱以“設備”形式列出。
一般情況下,adb 通過 USB 與設備進行通信,但您也可以在通過 USB 完成一些初始設置后,通過 WLAN 使用 adb,如下所述。
如果 adb 連接斷開:
如果有多個設備在運行,您在發出 adb 命令時必須指定目標設備。為此,請使用 devices 命令獲取目標設備的序列號。獲得序列號后,請結合使用 -s 選項與 adb 命令來指定序列號。如果您要發出很多 adb 命令,可以將 $ANDROID_SERIAL 環境變量設為包含序列號。如果您同時使用 -s 和 $ANDROID_SERIAL , -s 會替換 $ANDROID_SERIAL 。
$ adb -s emulator-5555 install helloWorld.apk
注意 :如果您在多個設備可用時發出命令但未指定目標設備,adb 會生成錯誤。
如果有多個可用設備,但只有一個是模擬器,請使用 -e 選項將命令發送至該模擬器。同樣,如果有多個設備,但只連接了一個硬件設備,請使用 -d 選項將命令發送至該硬件設備。
使用 forward 命令設置任意端口轉發,將特定主機端口上的請求轉發到設備上的其他端口。以下示例設置了主機端口 6100 到設備端口 7100 的轉發:
>adb forward tcp:6100 tcp:7100
您可以使用 pull 和 push 命令將文件復制到設備或從設備復制文件。與 install 命令(僅將 APK 文件復制到特定位置)不同,使用 pull 和 push 命令可將任意目錄和文件復制到設備中的任何位置。
如需從設備中復制某個文件或目錄(及其子目錄),請使用以下命令:
adb pull remote local
如需將某個文件或目錄(及其子目錄)復制到設備,請使用以下命令:
adb push loca remote
adb kill-rver
您可以使用 shell 命令通過 adb 發出設備命令,也可以啟動交互式 shell。如需發出單個命令,請使用 shell 命令,如下所示:
adb [-d |-e | -s shell shell_command
在 adb shell 中,您可以使用 Activity 管理器 ( am ) 工具發出命令以執行各種系統操作,如啟動 Activity、強行停止進程、廣播 intent、修改設備屏幕屬性,等等。在 shell 中,相應的語法為:
您也可以直接從 adb 發出 Activity 管理器命令,無需進入遠程 shell。例如:
adb shell am start -a android.intent.action.VIEW
adb 常用命令
當我們輸入 adb 或 adb help (用于查看 adb 幫助內容)時會輸出如下內容。
列出來的內容比較多,筆者挑選了幾個命令在下文做了簡單說明。
adb bugreport 使用用于生成 bug 文件的命令。生成的文件可以結合著上述的 adb pull 使用,把生成出來的安卓系統認為是出現了的bug日志文件,導出到電腦端,進行查看。
adb bugreport 目錄 可以把安卓系統認為是出現了的bug日志文件,以zip包的方式存放到指定目錄下。
如果上述命令遇到了問題,可以使用如下命令
在終端中執行如下操作:
上述命令可以把生成的bugreport文件存放到電腦的當前目錄,方便我們進行分析。
上邊的 800% CPU 是因為手機是8核的,后邊依次次有 ur 占用 7% 的CPU,sys 占用了 20% 的 CPU,及753%的空閑 CPU。
進入到shell的環境下后,我們就可以使用Linux的命令去操作手機。
比如