[持续更新中]自动化测试中经常使用到的adb 命令
2018-04-07 01:47
423 查看
一. 使用adb devices 显示已连接的设备二. adb push 和adb install安装Appadb push和adb install是apk包安装的两种方法,用法如下: 1.adb push XXX.apk /你想推送的路径 2.adb install XXX.apk 显而易见,两者的区别是,adb push可以自定义推送路径,adb install 只能安装在/data/app文件下。 其次,adb push 是将apk包复制到路径下面,重启后/system/app和/data/app下的apk包都会自动安装。 adb install是将apk安装到手机里,流程是: 复制APK安装包到data/app目录下,解压并扫描安装包,把dex文件(Dalvik字节码)保存到dalvik-cache目录,并data/data目录下创建对应的应用数据目录(so文件也在./包名/lib下,或者/data/app-lib/包名)。 另外,install复制APK安装包到data/app目录下的过程中,会将apk名改为包名-1.apk,数字为android接收到的版本号。 其中对于/system文件夹比较容易碰到的问题是报read only file的错误,哪怕/system已经被你改成了777的权限,解决的方法是:1.adb shell 2.su 3.mount -o remount rw /system重新挂载一下/system文件系统3. 如果连接有多台手机, 而想指定安装App到具体某一台手机时,可以用:a. 先用adb devices获得对应手机的Serial numberb. 然后用adb -s [Serial number] install XXX.apk4. 如果连接有多台手机, 而想安装App到所有手机时,可以用
5. 如果想一次安装多个App到手机, 可以用
三. 使用adb 命令列出已安装包列表1. adb shell pm list package2. 先打开adb shell, 然后su root, 最后ls /data/app
四. 使用adb 命令查找当前活动包与Activityadb shell dumpsys window w | findstr \/ | findstr name=例: 打开Android自带的计算器, 使用上面的命令会显示:mSurface=Surface(name=com.android.calculator2/com.android.calculator2.Calculator)其中com.android.calculator2是包的名字, Calculator是启动用的Activity
但实际上有些App有使用多个Activity, 所以启动时所用的Activity并不等于成功启动后的Activity, 这时候就需要在adb shell中持续监视App整个启动时所使用过的Activity了,命令如下: adb shell dumpsys activity activities 例: 如下面的输出: Running activities (most recent first): TaskRecord{a91e4ea8 #30 A=com.parknshop.parknshopapp U=0 sz=1} Run #0: ActivityRecord{a956a6e8 u0 com.parknshop.parknshopapp/parknshop.parknshopapp.OneActivity t30 mResumedActivity: ActivityRecord{a956a6e8 u0 com.parknshop.parknshopapp/parknshop.parknshopapp.OneActivity t30} mLastPausedActivity: ActivityRecord{a9485f18 u0 com.parknshop.parknshopapp/parknshop.parknshopapp.StartupActivity t30 f} mFocusedActivity: ActivityRecord{a956a6e8 u0 com.parknshop.parknshopapp/parknshop.parknshopapp.OneActivity t30} mDismissKeyguardOnNextActivity=false mFocusedStack=ActivityStack{a95ed6e8 stackId=16, 1 tasks} mStackState=STACK_STATE_HOME_IN_BACK mSleepTimeout=false mCurTaskId=30 mUserStackInFront={} Recent tasks: * Recent #0: TaskRecord{a91e4ea8 #30 A=com.parknshop.parknshopapp U=0 sz=1} numActivities=1 rootWasReset=true userId=0 mTaskType=0 numFullscreen=1 mOnTopOfHome=true affinity=com.parknshop.parknshopapp intent={act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.parknshop.parknshopapp/parknshop.parknshopapp.StartupActivity bnds=[564,1439] [786,1715]} realActivity=com.parknshop.parknshopapp/parknshop.parknshopapp.StartupActivity Activities=[ActivityRecord{a956a6e8 u0 com.parknshop.parknshopapp/parknshop.parknshopapp.OneActivity t30}] askedCompatMode=false lastThumbnail=null lastDescription=null lastActiveTime=83286140 (inactive for 7s)在Running activities (most recent first)里mFocusedActivity后面的表示正在屏幕上显示的Activity, 而Recent tasks下面的第一个Recent #0(表示刚运行完)里, 显示realActivity=com.parknshop.parknshopapp/parknshop.parknshopapp.StartupActivity, 这样表明实际上这个App刚启动时使用的Activity是一个叫StartupActivity的,然后切换到OneActivity进行正常使用, 当然如果Recent #1, #2都是同一个包的话,那么可能启动这个App会经过更加多的Activity之后才到达正常显示的这个Activity
在Android 7.0 之后可以"adb shell "cmd package resolve-activity --brief [包名] | tail -n 1"来获得一个App的默认Activity
五. 使用exit退出adb shell
六. 使用adb 命令远程调试 1. 首先要将手机用USB线连接电脑, 然后输入ADB命令"adb [-s 你手机的serial number] tcpip [port]" 来打开手机的远程调试端口 2. 然后使用ADB命令"adb connect [ip:port]" 来连接要调试的手机,注意这里不再需要-s 选项 3. 要注意某些手机的开发者选项里有子选项可以限制adb 安装应用或者控制输入, 如果有,请关闭这些限制
七. 使用adb 命令向设备输入文字 1. 由于Appium中的send_key与set_value方法各有各的问题,所以有些时候需要直接使用adb 命令向测试设备输入文字 2. 具体命令为adb [-s 你手机的serial number] shell input text "[要输入的内容]", 要输入的内容一定要用单引号' ' 或者 双引号" "包围起来 3. 由于ADB命令是一个linux like的指令集,所以在输入内容中有一些特殊符号, 比如", ', `, &, <, > 这些,会被当作是功能符号而转义, 可以使用单引号把特殊字符包围起来,比如"You '&' me", 又或者用两个\\, 比如\\"代表输入一个"到测试设备中
八. 使用adb 命令关闭所有后台App 1. 由于这个ADB命令的作用是关闭后台进程,如果想连当前测试App都关闭,就要先发送一个Home键把所有App都放到后台先 2. 再使用"adb [-s 你手机的serial number] shell am -kill-all"
5. 如果想一次安装多个App到手机, 可以用
三. 使用adb 命令列出已安装包列表1. adb shell pm list package2. 先打开adb shell, 然后su root, 最后ls /data/app
四. 使用adb 命令查找当前活动包与Activityadb shell dumpsys window w | findstr \/ | findstr name=例: 打开Android自带的计算器, 使用上面的命令会显示:mSurface=Surface(name=com.android.calculator2/com.android.calculator2.Calculator)其中com.android.calculator2是包的名字, Calculator是启动用的Activity
但实际上有些App有使用多个Activity, 所以启动时所用的Activity并不等于成功启动后的Activity, 这时候就需要在adb shell中持续监视App整个启动时所使用过的Activity了,命令如下: adb shell dumpsys activity activities 例: 如下面的输出: Running activities (most recent first): TaskRecord{a91e4ea8 #30 A=com.parknshop.parknshopapp U=0 sz=1} Run #0: ActivityRecord{a956a6e8 u0 com.parknshop.parknshopapp/parknshop.parknshopapp.OneActivity t30 mResumedActivity: ActivityRecord{a956a6e8 u0 com.parknshop.parknshopapp/parknshop.parknshopapp.OneActivity t30} mLastPausedActivity: ActivityRecord{a9485f18 u0 com.parknshop.parknshopapp/parknshop.parknshopapp.StartupActivity t30 f} mFocusedActivity: ActivityRecord{a956a6e8 u0 com.parknshop.parknshopapp/parknshop.parknshopapp.OneActivity t30} mDismissKeyguardOnNextActivity=false mFocusedStack=ActivityStack{a95ed6e8 stackId=16, 1 tasks} mStackState=STACK_STATE_HOME_IN_BACK mSleepTimeout=false mCurTaskId=30 mUserStackInFront={} Recent tasks: * Recent #0: TaskRecord{a91e4ea8 #30 A=com.parknshop.parknshopapp U=0 sz=1} numActivities=1 rootWasReset=true userId=0 mTaskType=0 numFullscreen=1 mOnTopOfHome=true affinity=com.parknshop.parknshopapp intent={act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.parknshop.parknshopapp/parknshop.parknshopapp.StartupActivity bnds=[564,1439] [786,1715]} realActivity=com.parknshop.parknshopapp/parknshop.parknshopapp.StartupActivity Activities=[ActivityRecord{a956a6e8 u0 com.parknshop.parknshopapp/parknshop.parknshopapp.OneActivity t30}] askedCompatMode=false lastThumbnail=null lastDescription=null lastActiveTime=83286140 (inactive for 7s)在Running activities (most recent first)里mFocusedActivity后面的表示正在屏幕上显示的Activity, 而Recent tasks下面的第一个Recent #0(表示刚运行完)里, 显示realActivity=com.parknshop.parknshopapp/parknshop.parknshopapp.StartupActivity, 这样表明实际上这个App刚启动时使用的Activity是一个叫StartupActivity的,然后切换到OneActivity进行正常使用, 当然如果Recent #1, #2都是同一个包的话,那么可能启动这个App会经过更加多的Activity之后才到达正常显示的这个Activity
在Android 7.0 之后可以"adb shell "cmd package resolve-activity --brief [包名] | tail -n 1"来获得一个App的默认Activity
五. 使用exit退出adb shell
六. 使用adb 命令远程调试 1. 首先要将手机用USB线连接电脑, 然后输入ADB命令"adb [-s 你手机的serial number] tcpip [port]" 来打开手机的远程调试端口 2. 然后使用ADB命令"adb connect [ip:port]" 来连接要调试的手机,注意这里不再需要-s 选项 3. 要注意某些手机的开发者选项里有子选项可以限制adb 安装应用或者控制输入, 如果有,请关闭这些限制
七. 使用adb 命令向设备输入文字 1. 由于Appium中的send_key与set_value方法各有各的问题,所以有些时候需要直接使用adb 命令向测试设备输入文字 2. 具体命令为adb [-s 你手机的serial number] shell input text "[要输入的内容]", 要输入的内容一定要用单引号' ' 或者 双引号" "包围起来 3. 由于ADB命令是一个linux like的指令集,所以在输入内容中有一些特殊符号, 比如", ', `, &, <, > 这些,会被当作是功能符号而转义, 可以使用单引号把特殊字符包围起来,比如"You '&' me", 又或者用两个\\, 比如\\"代表输入一个"到测试设备中
八. 使用adb 命令关闭所有后台App 1. 由于这个ADB命令的作用是关闭后台进程,如果想连当前测试App都关闭,就要先发送一个Home键把所有App都放到后台先 2. 再使用"adb [-s 你手机的serial number] shell am -kill-all"
相关文章推荐
- 【和小强学移动app测试3】adb命令使用汇总(持续更新)
- 【和小强学移动app测试3】adb命令使用汇总(持续更新)
- 在windows下使用cmd命令通过adb shell自动调用android模拟或真机的InstrumentRunner进行android 自动化测试
- 记录g++命令中经常使用的参数(持续更新中......)
- adb命令使用汇总(持续更新)
- 我经常使用的ruby gem 列表(持续更新中)
- Linux-查找命令的使用情况(持续更新)
- 如何使用adb命令查看和更新数据库
- 使用 flow.ci 实现 Android 自动化测试与持续集成
- 测试人员的常用linux命令(持续更新)2016.11.07
- 手机软件测试如何使用adb命令抓取手机Log
- ADB的简单命令-持续更新
- 偶经常用到的LINUX命令整理(持续更新)
- 使用 flow.ci 实现 Android 自动化测试与持续集成
- 有用的adb 命令(持续更新)
- Adb-For-Test 使用 adb 命令实现元素定位等功能,用来辅助 android 测试
- ubuntu 使用命令总结(持续更新)
- 【android-tips】adb 常用命令汇总(持续更新中)
- 容易忽略的ADB命令(持续更新中)
- SharePoint 命令使用集锦 (持续更新中...)