adb、package及activity
1. adb
adb连接手机参考:https://www.cnblogs.com/mind18/p/12592252.html,中的三.5节
1.1. adb介绍
ADB全名Andorid Debug Bridge。 是一个Debug工具。adb是一个标准的C/S结构的工具,其允许电脑与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试应用。
包含如下几个部分:
1.Client端,运行在开发机器中,即你的开发PC机。用来发送adb命令。
2.Daemon守护进程, 运行在调试设备中, 即调试手机或模拟器。
3.Server端, 作为一个后台进程运行在开发机器中, 即你的开发PC机. 用来管理PC中的Client端和手机的Daemon之间的通信。
三者之间的通信:Client<—>Server<—>Daemon
1.2. 工作原理
启动一个 adb 客户端时,此客户端首先检查是否有已运行的 adb 服务器进程。如果没有,它将启动服务器进程。当服务器启动时,它与本地 TCP 端口 5037 绑定,并侦听从 adb 客户端发送的命令—所有 adb 客户端均使用端口 5037 与 adb 服务器通信。
目前很多PC客户端手机助手也是基于adb连接原理进行封装的。
1.3. 常用命令
1.查看adb版本号:adb version
2.连接夜神模拟器:adb connect 127.0.0.1:62001(夜神模拟器的端口是规律的,第一个模拟器端口是62001,第二个模拟器端口是62025,第三个是62025+1,依此类推。)
a)模拟器1:Android 4.4.2 地址:127.0.0.1:62001
b)模拟器2: Andriod 5.1.1 地址:127.0.0.1:62025
3.设备:
获取设备号(查看连接设备是否成功):adb devices
获取设备的状态:adb get-state(device:设备正常连接,offline:连接出现异常,设备无响应;unknown:没有连接设备)
返回设备序列号SN值:adb get-serialno
获取设备的ID:adb get-product
获取设备分辨率:adb shell wm size
4.获取系统版本:adb -s 设备号 shell getprop ro.build.version.release
5.adb shell(手机shell命令行):进入adb shell后有两种状态显示:#代表有root权限,$代表没有root权限
获取 root 权限:adb root
adb remount:可以直接获取 root 权限,并挂载系统文件系统为可读写状态。
6.安装app到手机:
adb install 路径/xx.apk(默认安装)
adb install -r 路径/xx.apk(覆盖安装)
adb –s 127.0.0.1:62001 install 路径/xx.apk(指定设备安装)
如遇到报错:Failure [INSTALL_FAILED_INVALID_URI],解决方案: cmd命令行下执行以下命令:第一步、adb remount;第二步、adb shell;第三步、cd /data;第四步、chmod 777 local;重新安装apk,ok了。
7.卸载手机app:
首先进入设备的/data/app目录找到app包名:
adb shell
cd /data/app/
执行命令删除:
adb uninstall com.wandoujia.phoenix2(安装后的包名系统会在末尾加上-1之类的数字,要去掉才可以成功卸载。软件名称为包名,不要包含.apk)
adb uninstall | -k <apkName>(加-k参数,为卸载软件但是保留配置和缓存文件)
8.查看设备上面安装的应用包名:adb shell pm list package
列出指定应用的 dump 信息:adb shell pm dump 包名
列出对应包名的 .apk 位置:adb shell pm path 包名
9.获取app启动包名和启动名(手机需要先打开对应app):
Mac/Linux: 'adb shell dumpsys window windows | grep mFocusedApp’
在Windows 终端运行 'adb shell dumpsys window windows | findstr mFocusedApp’
10.获取app启动时间:adb shell am start -W 包名/启动名
示例:adb shell am start -W com.yly.drawpic/.MainActivity
解释:TotalTime:app自身启动时间;WaitTime:系统启动应用时间
11.文件读取写入:
发送文件到手机:adb push 电脑端文件路径 手机端存储的路径
示例:adb push C:\Users\win\Desktop\xx.png /sdcard
从手机拉取文件到pc:adb pull 手机端文件的路径 电脑端存储文件路径
示例:adb pull /sdcard/xx.png C:\Users\win\Desktop
注意:由于权限问题,不能直接pull到电脑磁盘根目录,否则会报错:
C:\Users\Shuqing>adb pull /sdcard/server.log D:\\
adb: error: cannot create file/directory 'D:\\': No such file or directory
12.屏幕截图:
$ adb shell screencap /sdcard/screen.png
adb pull /sdcard/screen.png C:\Users\Shuqing\Desktop
录制视频并保存至sdcard:adb shell screenrecord sdcard/record.mp4,执行命令后操作手机,ctrl + c 结束录制,录制结果保存至 sdcard。
13.查看手机运行日志:adb logcat
清除日志:adb logcat –c
生成bugreport文件:adb bugreport
打印dumpsys、dumpstate、logcat的输出,也是用于分析错误,输出比较多,建议重定向到一个文件中,如adb bugreport > d:\bugreport.log
14.查看当前终端中的进程信息:adb shell ps
15.重启:
重启 Android 设备:adb reboot
重启到Recovery界面:adb reboot recovery
重启到bootloader界面:adb reboot bootloader
16.adb服务启动和关闭:
adb kill-server(关闭adb服务)
adb start-server(开启adb服务)
如果5037端口被占用可以使用如下命令释放端口
C:\Users\Shuqing> netstat -ano | findstr "5037"
TCP 127.0.0.1:5037 0.0.0.0:0 LISTENING 11072
TCP 127.0.0.1:5037 127.0.0.1:59519 TIME_WAIT 0
taskkill -f -pid XXX
17.adb帮助:adb –help
2. package和activity
2.1. package
- app中这个Package是唯一的,在做app自动化时,我们就需要知道Package。注意:和.apk文件包名不同。
- Package获取:
A.通过UIAuto可获取不同app的包名。
B.查看设备上面安装的应用包名:adb shell pm list package
C.获取app启动包名和启动名(手机需要先打开对应app):
Mac/Linux: 'adb shell dumpsys window windows | grep mFocusedApp’
Windows 终端: 'adb shell dumpsys window windows | findstr mFocusedApp’
2.2. activity
1、介绍:
Android中,activity是所有程序的根本,所有程序的流程都运行在activity之中,activity可以算是开发者遇到的最频繁,也是android当中最基本的模块之一。
在android的程序中,activity一般代表手机屏幕的一屏。如果把手机比作一个浏览器,那么activity就相当于一个网页。在activity当中可以添加一些Button、Checkbox等控件,可以看到activity概念和网页的概念相当类似。
一般一个android应用是由多个activity组成的,多个activity之间可以进行相互跳转。例如,按下一个Button按钮后,可能会跳转到其他的activity,与网页跳转稍微有点不一样的是,activity之间的跳转有可能返回值。
2、activity的生命周期:
“产生、运行、销毁”,但是这其中会调用许多方法onCreate(创建) 、onStart(激活) 、onResume(恢复) 、onPause(暂停) 、onStop(停止) 、onDestroy(销毁) 、onRestart(重启)。
3、Activity获取:
研发提供
Aapt(t即Android Asset Packaging Tool,在SDK的build-tools目录下。该工具可以查看,创建, 更新ZIP格式的文档附件(zip, jar, apk)。也可将资源文件编译成二进制文件),获取命令如下:
aapt dump badging xxxx.apk
aapt dump badging xxxx.apk | find "launchable-activity"