A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

移动端的Android测试总是少不了一些adb命令的操作,稍微总结一下自己经常用到的命令。

例如:adb无法安装debug包,提示Failure [INSTALL_FAILED_TEST_ONLY],怎么办?莫慌,加个-t参数即可



  • $ 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


设备信息相关

1、设备名



  • $ 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、获取设备的一些信息:$ 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获取设备IMEI:iphonesubinfo



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



  • 872429031076264


3、自动化中可能应用到输入法设置



  • # 列出当前安装的输入法



  • $ adb shell ime list







  • # 当前默认的输入法



  • $ adb shell settings get secure default_input_method







  • # 设置输入法



  • $ 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、获取帧数据,这部分的详细内容可以看我的另一篇分析:
Android FPS流畅度测试



  • $ adb shell dumpsys gfxinfo PackageName



  • $ adb shell dumpsys gfxinfo PackageName framestats


7、简单的广播操作:



  • 广播 - 改变wifi状态



  • $ 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图片等到设备中不会立即被识别,这时候需要手动刷新一下



  • $ 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图片等到设备中不会立即被识别,这时候需要手动刷新一下



  • $ 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开发板获得完整root权限。
这个至少要在Android 6.0以上,较新adb版本。背景是,MIUI开发板已经获得了root权限,但还是不能对system目录进行读写。这时候可以试试security中的disable-verity,作用是disable dm-verity checking on userdebug builds。



  • $ adb root



  • $ adb disable-verity



  • $ adb reboot







  • # 重新开启也很简单



  • $ adb enable-verity


9、APK相关



  • # 安装、卸载



  • $ adb install PackageName



  • $ adb uninstall PackageName







  • # 查看安装包信息



  • $ aapt dump badging PackageName







  • # 强制停止某个应用



  • $ adb shell am force-top PackageName







  • # 清除某个应用的数据(相当于新安装)



  • $ adb shell pm clear PackageName







  • # 启动应用



  • $ adb shell am start -D -n packageName/activity


10、动态调试需要用到forward



  • # 使用IDA进行动态调试,需要端口转发



  • $ adb forward tcp:23946 tcp:23946







  • # smali动态调试



  • $ adb forward tcp:8800 jdwp:21683


11、改变手机网络状态: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就有很多可讲的。它们都是有具体的应用场景,后面会在单独的文章中进行介绍。



2 个回复

倒序浏览
奈斯,很赞
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马