Android開發環境安裝好之後,需要將adb路徑添加到環境變量(PATH)中,這樣,就可以在命令行下直接使用adb命令了。
需要注意的是,有的命令需要先進入手機的linux系統,然後纔可以使用,即adb shell, …,這裏稱這種命令爲shell命令。另外有的命令可以直接用adb 使用,這裏稱之爲非shell命令。通常兩者可以通用的,下面會分別列出這兩種命令。
常用非Shell命令
連接相關
adb version 查看adb版本
adb devices 查看連接設備
adb connect <android_ip> 連接android設備(需要在同一網段下)
adb kill-server 殺死adb 服務
adb start-server 啓動adb服務
adb reboot 重啓手機
多個Android設備
adb devices 查看連接設備
adb -s <device_name> shell 進入指定的設備shell
串口下輸入命令,保證可以adb connect成功
stop adbd
setprop service.adb.tcp.port 5555
start adbd
應用相關
adb shell pm list packages 顯示所有應用信息
adb shell pm list packages -s 顯示系統應用信息
adb shell pm list packages -3 顯示第三方應用信息
adb shell pm list permissions -d -g 顯示權限信息
adb shell pm clear <package_name> 清除數據
adb shell pm install <package_name> 安裝應用
adb shell pm install -r -r <package_name> 保留數據和緩存文件,重新安裝apk
adb shell pm uninstall <package_name> 卸載應用(與adb uninstall相同)
adb install <package_name> 安裝應用
adb install -r <package_name> 保留數據和緩存文件,重新安裝apk
adb uninstall <package_name> 卸載應用
獲取手機系統信息
adb shell cat /proc/cpuinfo 顯示cpu信息
adb get-serialno 獲取序列號
adb shell cat /sys/class/net/wlan0/address 獲取mac地址
adb shell getprop ro.product.model 獲取設備型號
adb shell wm size 查看屏幕分辨率
adb shell wm density 查看屏幕密度
log相關
adb logcat -v time 帶時間戳的log
adb logcat -b <buffer> 查看不同類型的log,如main,system,radio,events,crash,all.默認爲main log
adb logcat -c 清除log
adb logcat | grep -i "str" 忽略大小寫篩選指定字符串log
adb logcat | grep -iE "str1|str2|str3" 篩選多個字符串
adb logcat > log.txt 打印log輸入到文件
fastboot模式
adb reboot-bootloader
fastboot flash boot boot.img
fastboot flash recovery recovery.img
fastboot flash android system.img
輸入文本
adb shell input text "str" 在EditText中輸入文本。通常在TV或者盒子上,代替用遙控器輸入
對應shell命令爲:
input text "str"
注:也可以模擬其他事件,如點擊,觸摸等等。
文件相關
adb remount
adb push <file_path> <dest_path> 從PC向手機端push文件
adb pull <target_path> <dest_path> 從手機端向PC端拉取文件
eg.
adb remount
adb push Hello.apk /system/app/Hello/
截屏與錄屏
截屏:
adb shell screencap -p <output_file> 截取屏幕,並設置圖片存儲路徑
adb pull <output_file> . 拉取該截圖到PC
adb shell rm <output_file> 刪除截圖文件
eg.
adb shell screencap -p /sdcard/screen.png
錄屏:
adb shell screenrecord <output_file> 錄屏
dumpsys 查看信息相關
adb shell dumpsys 顯示當前android系統信息(四大組件,內容太多,一般使用重定向)
adb shell dumpsys > info.txt 顯示當前android系統信息(文件重定向)
activity:
adb shell dumpsys activity 顯示當前所有activity信息
adb shell dumpsys activity top 查看當前應用的 activity 信息
package:
adb shell dumpsys package [package_name] 查看應用信息
內存:
adb shell dumpsys meminfo [package_name/pid] 查看指定進程名或者是進程 id 的內存信息
數據庫:
adb shell dumpsys dbinfo [package_name] 查看指定包名應用的數據庫存儲信息(包括存儲的sql語句)
am 相關
啓動Activity:
adb shell am start -n <package_name>/<package_name>.<activity_name>
eg.
adb shell am start -n com.example.hello/com.example.hello.MainActivity
啓動Service:
adb shell am startservice -n <package_name>/<package_name>.<service_name> 啓動service
eg.
adb shell am startservice -n com.example.test/com.example.test.TestService
發送廣播:
adb shell am broadcast -a <action> 發送廣播
查看網絡信息
adb shell netcfg 查看設備的 ip 地址
adb shell netstat 查看設備的端口號信息
屬性信息
adb shell getprop [prop_name] 查看屬性信息
adb shell setprop <prop_name> <value> 設置屬性值
Monkey測試
adb shell monkey [options] <event-count>
adb shell monkey -p <package_name> -v <event_number>
對指定應用,做evnet_number個隨機僞事件
查看進程信息
adb shell ps 查看進程信息
常用shell命令
在命令行下先執行adb shell,進入linux系統,然後再執行這些命令。
通常,大部分非shell命令都對應shell命令。這個使用者靈活掌握即可。
eg.
adb shell logcat
對應 logcat
adb shell getprop
對應 getprop
adb shell am start -n
對應 am start -n
其他
顯示cpu信息:
啓動一個Activity
前提,在真機上,該Activity在AndroidManifest.xml中的exported屬性必須爲true纔可以用adb shell 啓動,在模擬器上不需要。即android:exported="true"
。exported的default值是false的。
啓動一個Activity:
adb shell am start -n <package name>/<activity name>
eg.
adb shell am start -n com.example.hello/com.example.hello.MainActivity
或者
adb shell am start -n com.example.hello/.MainActivity
在真機上exported爲false的時候,執行命令會出現異常:
adb shell am start -n com.example.hello/.activity.HelloActivity
Starting: Intent { cmp=com.example.hello/.activity.HelloActivity }
java.lang.SecurityException: Permission Denial: starting Intent { flg=0x10000000 cmp=com.example.hello/.activity.HelloActivity } from null (pid=9098, uid=2000) not exported from uid 10221
at android.os.Parcel.readException(Parcel.java:1546)
at android.os.Parcel.readException(Parcel.java:1499)
at android.app.ActivityManagerProxy.startActivityAsUser(ActivityManagerNative.java:2642)
at com.android.commands.am.Am.runStart(Am.java:766)
at com.android.commands.am.Am.onRun(Am.java:305)
at com.android.internal.os.BaseCommand.run(BaseCommand.java:47)
at com.android.commands.am.Am.main(Am.java:97)
at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:284)
adb 截圖命令
截圖保存到SD卡里再導出
$ adb shell screencap -p /sdcard/screen.png
$ adb pull /sdcard/screen.png
$ adb shell rm /sdcard/screen.png
這種方法比較麻煩,需要3步:
- 截圖保存到sdcard
- 將圖片導出
- 刪除sdcard中的圖片
截圖直接保存到電腦(Windows only)
$ adb shell screencap -p | sed 's/\r$//' > screen.png
執行adb shell 將\n轉換\r\n, 因此需要用sed刪除多餘的\r
使用alias
修改~/.bashrc,添加一句:
alias adb-screencap="adb shell screencap -p | sed 's/\r$//'"
執行source ~/.bashrc
後,可以直接使用
adb-screencap > screen.png
截圖並保存到電腦上
參考:
http://blog.csdn.net/jiangwei0910410003/article/details/73385819