前戏
adb的工作原理:
启动一个adb客户端时,此客户端首先检查是否有已运行的adb服务器进程,如果没有,它将启动服务器进程,当服务器启动时,它与本地TCP端口5037绑定,并侦听从adb客户端发送的命令,所有adb客户端均使用端口5037与adb服务器通信
启用adb调试
要在通过USB连接的设备上使用adb,你必须在设备系统设置中启用adb debugging(位于开发者工具下),如果没有开发者工具,找到关于手机,版本号,多次点击
夜神模拟器的端口是有规律的:第一个模拟器端口是62001,第二个端口是62025,第三个是62025+1,以此类推
adb命令
查看版本号:直接在cmd下输入:
adb version
连接模拟器:
adb connect 127.0.0.1:62001
查看连接的模拟器:
adb devices
温馨提示:
如果出现以下提示
adb server version(31) doesn‘t match this client(36)
原因:adb版本不对,Android SDK的版本和adb版本不一致
解决方案:将Android SDK的 adb 替换掉模拟器的adb即可。模拟器adb路径,安装路径\Nox\bin
adb shell
android底层是linux系统,进入到linux系统的字符交互界面
进入指定设备的shell
adb -s 127.0.0.1:62001 shell
退出adb shell
exit
进入adb shell后有两种状态显示:#代表有root权限,$代表没有root权限
温馨提示:
首先要进行连接模拟器才能安装和执行命令
在设备安装apk
adb install 文件的路径 (默认安装)
覆盖安装
adb install -r 文件路径
指定设备安装
adb -s 127.0.0.1:62001 install 文件路径
如安装遇到报错:Faiture [INSTALL_FAILED_INVALID_URI]
解决方案:cmd命令行下执行以下命令
第一步:adb remount
第二步:adb shell
第三步:cd /data
第四步:chmod 777 local
重新安装apk,ok
卸载app
首先进入设备的/data/app目录找到app包名
adb shell
cd /data/app/
执行命令删除
adb uninstall (-k) 包名 adb uninstall com.wandoujia.phoenix2
要在cmd下执行卸载命令,不是在shell下执行
安装后的包名系统会在末尾加上-1之类的数字,要去掉才可以成功卸载,软件名称为包名,不要包含.apk
-k参数,卸载软件但保留配置和缓冲文件
adb uninstall -k com.wandoujia.phoenix2
查看设备上安装的应用包名
adb shell pm list package
-s: 列出系统应用
adb shell pm list package -s
-3: 列出第三方应用
adb shell pm list package -3
-f:列出应用包名及对应的apk名及存放位置
db shell pm list package -f
只查找某个包
先进入shell下,在查找
文件读取写入
将文件从pc写入到设备
adb push 电脑文件路径 设备路径
将文件从设备读取到pc
adb pull 设备文件路径 电脑文件路径 如果需要重命名为readme.txt adb pull /sdcard/server.log F:\App\readme.txt
注意:由于权限问题,不能直接pull到电脑磁盘根目录,否则会报错
截图
adb shell screencap /sdcard/wandou.png
adb服务启动和关闭
adb kill-server 关闭adb服务 adb start-server 启动adb服务
直接将截图保存在本地
adb shell screencap -p > /Users/mac/112.png 或者 adb exec-out screencap -p > /Users/mac/112.png
录屏
adb shell screenrecord /sdcard/demo.mp4
查看包名
aapt dump badging 文件名路径
aapt dump badging F:\App\weixin.apk | findstr "launchable-activity"
没有安装包
使用
adb shell dumpsys window | findstr mCurrentFocus
命令查看当前运行的包名和Activity更清晰一些