Android測試 adb常用命令

移動端的Android測試總是少不了一些adb命令的操作,稍微總結(jié)一下自己經(jīng)常用到的命令。

例如:adb無法安裝debug包,提示Failure [INSTALL_FAILED_TEST_ONLY],怎么辦?莫慌,加個-t參數(shù)即可

$ adb install -t debug.apk

這一點在adb的說明中有明確的提示, -t 即表示允許test package
$ adb
......
app installation:
 install [-lrtsdg] PACKAGE
 install-multiple [-lrtsdpg] PACKAGE...
     push package(s) to the device and install them
     -l: forward lock application
     -r: replace existing application
     -t: allow test packages
     -s: install application on sdcard
     -d: allow version code downgrade (debuggable packages only)
     -p: partial application install (install-multiple only)
     -g: grant all runtime permissions

設(shè)備信息相關(guān)

1、設(shè)備名

$ adb devices
List of devices attached
* daemon not running. starting it now at tcp:5037 *
* daemon started successfully *
b33aa57c    device

如果連接的是模擬器的話,需要先connect一下,例如:
夜神模擬器連接adb:adb connect 127.0.0.1:62001
海馬玩模擬器連接adb:adb connect 127.0.0.1:53001

2、獲取設(shè)備的一些信息:$ adb shell cat /system/build.prop

# 例如
$ adb shell cat /system/build.prop |grep ro.product.model
ro.product.model=MI 5

$ adb shell cat /system/build.prop |grep ro.build.version.release
ro.build.version.release=6.0.1

$ adb shell cat /system/build.prop |grep ro.product.cpu.abi
# ro.product.cpu.abi and ro.product.cpu.abi2 are obsolete,
# use ro.product.cpu.abilist instead.
ro.product.cpu.abi=arm64-v8a
ro.product.cpu.abilist=arm64-v8a,armeabi-v7a,armeabi
ro.product.cpu.abilist32=armeabi-v7a,armeabi
ro.product.cpu.abilist64=arm64-v8a

常用方法

1、獲取當前最上層activity

$ adb shell dumpsys activity | grep "mFocusedActivity"
  mFocusedActivity: ActivityRecord{5bef6d8 u0 com.miui.home/.launcher.Launcher t1803}

2、通過adb獲取設(shè)備IMEI:iphonesubinfo

$ adb shell service call iphonesubinfo 1 | awk -F "'" '{print $2}' | sed '1 d' | tr -d '.' | awk '{print}' ORS=
872429031076264

3、自動化中可能應(yīng)用到輸入法設(shè)置

# 列出當前安裝的輸入法
$ adb shell ime list

# 當前默認的輸入法
$ adb shell settings get secure default_input_method

# 設(shè)置輸入法
$ adb shell ime set com.google.android.inputmethod.pinyin/.PinyinIME

4、截圖、截視頻

# 截圖
$ adb shell /system/bin/screencap -p /sdcard/screenshot.png

# 錄制是視頻
$ adb shell screenrecord /sdcard/demo.mp4

5、獲取分辨率

$ adb shell wm size
Physical size: 1080x1920

$ adb shell dumpsys window displays |head -n 3
WINDOW MANAGER DISPLAY CONTENTS (dumpsys window displays)
  Display: mDisplayId=0
    init=1080x1920 480dpi cur=1080x1920 app=1080x1920 rng=1080x1020-1920x1860

6、獲取幀數(shù)據(jù),這部分的詳細內(nèi)容可以看我的另一篇分析:
Android FPS流暢度測試

$ adb shell dumpsys gfxinfo PackageName
$ adb shell dumpsys gfxinfo PackageName framestats

7、簡單的廣播操作:

廣播 - 改變wifi狀態(tài)
$ adb shell am broadcast -a android.net.wifi.WIFI_STATE_CHANGED -ei disable

廣播 - 改變電量,level代表電量
$ adb shell am broadcast -a android.intent.action.BATTERY_CHANGED --ei plugged 0 --ei temperature 2 --ei status 3 --ei level 4

廣播 - 刷新media庫單個文件。有時候我們push圖片等到設(shè)備中不會立即被識別,這時候需要手動刷新一下
$ adb shell am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d file:///storage/emulated/0/DCIM/Camera/yourpic.jpg
eg:....SCANNER_SCAN_FILE -d file:///storage/emulated/0/DCIM/Camera/yourpic.jpg

廣播 - 刷新media庫文件夾。有時候我們push圖片等到設(shè)備中不會立即被識別,這時候需要手動刷新一下
$ adb shell am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d yourPath
eg:....SCANNER_SCAN_FILE -d file:///storage/emulated/0/DCIM/Camera/

8、有的MIUI開發(fā)板獲得完整root權(quán)限。
這個至少要在Android 6.0以上,較新adb版本。背景是,MIUI開發(fā)板已經(jīng)獲得了root權(quán)限,但還是不能對system目錄進行讀寫。這時候可以試試security中的disable-verity,作用是disable dm-verity checking on userdebug builds。

$ adb root
$ adb disable-verity
$ adb reboot

# 重新開啟也很簡單
$ adb enable-verity

9、APK相關(guān)

# 安裝、卸載
$ adb install PackageName
$ adb uninstall PackageName

# 查看安裝包信息
$ aapt dump badging PackageName

# 強制停止某個應(yīng)用
$ adb shell am force-top PackageName

# 清除某個應(yīng)用的數(shù)據(jù)(相當于新安裝)
$ adb shell pm clear PackageName

# 啟動應(yīng)用
$ adb shell am start -D -n packageName/activity

10、動態(tài)調(diào)試需要用到forward

# 使用IDA進行動態(tài)調(diào)試,需要端口轉(zhuǎn)發(fā)
$ adb forward tcp:23946 tcp:23946

# smali動態(tài)調(diào)試
$ adb forward tcp:8800 jdwp:21683

11、改變手機網(wǎng)絡(luò)狀態(tài):adb shell svc

$ adb shell svc
Available commands:
    help     Show information about the subcommands
    power    Control the power manager
    data     Control mobile data connectivity
    wifi     Control the Wi-Fi manager
    usb      Control Usb state
    nfc      Control NFC functions

這里用wifi作為例子:其他的書輸入help即可查看

$ adb shell svc wifi help
Control the Wi-Fi manager

usage: svc wifi [enable|disable]
         Turn Wi-Fi on or off.

# 使用方法
$ adb root
$ adb shell svc wifi disable/enable

12、跑跑monkey

#示例
$ adb shell monkey -p PackageName --throttle 600 --pct-trackball 44 --pct-touch 44 --pct-appswitch 2 --pct-motion 10 -v 1000

adb的命令還有很多,光是dumpsys、am和pm就有很多可講的。它們都是有具體的應(yīng)用場景,后面會在單獨的文章中進行介紹。
官網(wǎng)的介紹:
https://developer.android.com/studio/command-line/adb.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,171評論 25 708
  • 福利大放送 這是對好多adb命令行的總結(jié),很實用,有些東西知道了之后就會特別酷炫: 內(nèi)容 指定目標設(shè)備: 如果只有...
    Only凹凸曼閱讀 2,759評論 1 6
  • https://www.zhihu.com/question/29191748 有人知道哪有把語音翻譯成文字的軟...
    靖蘭亭閱讀 711評論 0 51
  • [日就月將]2017-6-7周三,學(xué)習(xí)力踐行D84天。1-古詩,16+3望天門山,墓江吟,江雪。2-繪本,語言啟蒙...
    wxgcgb閱讀 251評論 0 0
  • 『社團簡介』 動漫天城協(xié)會創(chuàng)立于2003年,是江西財經(jīng)大學(xué)校級ACGN愛好社團,在蛟橋、麥盧、楓林校區(qū)都有我們的小...
    睡醒的人哭著想回家閱讀 580評論 0 0

友情鏈接更多精彩內(nèi)容