一、 adb安装及配置
1 下载安装
创建目录,点击安装exe文件或将免安装版放到创建目录下
下载及简介地址: Android 调试桥 (ADB) | Android 开源项目 | Android Open Source Project (google.cn)
2 配置环境
在系统环境配置中新建android_adb_server_port 5037默认端口(有些调试需要默认端口才能使用,如chrome调试手机)
添加adb目录到环境目录path中,并保存
3 常见问题
3.1当都口号被占或查询端口号
查看端口是否被占用:运行:netstat -ano | findstr “5037” 或者(查看多有端口netstat -ano)
C:\Users\chen>netstat -aon|findstr 5037
TCP 127.0.0.1:5037 0.0.0.0:0 LISTENING 3676
通过PID查看所有进程
C:\Users\chen>tasklist /fi “PID eq 3676”
映像名称 PID 会话名 会话# 内存使用
svchost.exe 3676 Services 0 13,800 K
杀死占用端口的进程
C:\Users\chen>taskkill /pid 3676 /f
成功: 已终止 PID 为 3676 的进程。
3.2 chrome无法调试
输入chrome://inspect/#devices无法显示
升级谷歌浏览器(方法1)
手机的开发者模式关掉再打开(方法2)
3.3 adb输出日志报错 read: unexpected EOF!
原因:logcat 进程异常退出,是因为 log buffer size 设置过小导致的,默认size 是 256KB,如果长时间运行,并产生大量log 日志,肯定超过 默认256KB。解决方法:
1).在手机的系统设置中,将日志记录器缓冲区大小调整到更大一些即可。执行:adb logcat -G 2m设置缓冲区大小后,再执行adb logcat
2).设置路径:系统设置 > 开发者选项 > 调试 > 日志记录器缓冲区大小
二、adb常用命令
adb [-d|-e|-s ]
连接指定设备
参数:
-d 指定当前唯一通过USB 连接的Android 设备为命令目标
-e 指定当前唯一运行的模拟器为命令目标
-s 指定相应serialNumber 号的设备/模拟器为命令目标
command 为所需对设备执行的命令
1 连接设备
adb devices #查看连接设备
adb -s cf27456f shell # 指定连接设备使用命令
adb get-serialno #获取序列号
adb connect ip # 连接设备
adb disconnect # 断开连接
adb version 查看adb 版本信息
adb devices 查看adb 连接设备
示例:
$adb devices
List of devices attached
1226959f device
3426422f offline
注意:offline 表示设备未连接成功或无响应,device 设备已连接
adb get-serialno 获取设备序列号
2 adb shell unix常用命令
cat 显示文件内容
cd 切换目录
chmod 改变文件的存取模式/访问权限
cf 查看磁盘空间使用情况
grep 过滤输出
kill 杀死指定PID的进程
ls 列举目录内容
mount 挂载目录的查看和管理
mv 移动或重命名文件
ps 查看正在运行的进程
rm 删除文件
top 查看进程的资源占用情况
3 安装和卸载
adb install test.apk # 安装应用
adb install -r demo.apk #安装apk 到sd 卡:
adb uninstall cn.com.test.mobile #卸载应用,需要指定包
adb uninstall -k cn.com.test.mobile #卸载app 但保留数据和缓存文件
4 启动停止服务
adb start-server 启动adb 服务,基本不会用到,因为只要设备连接正确,会自动启动adb server
adb kill-server 停止adb server
adb -P start-server 指定adb server 的网络端口port (默认为5037)启动服务
5应用交互
5.1 am (activity manager)
这个命令可以启动Activity、打开或关闭进程、发送广播等操作。
adb shell am
command 命令详解
start [options] 启动 指定的 Activity
startservice [options] 启动 指定的 Service
broadcast [options] 发送 指定的广播
force-stop 停止 相关的进程
参数很灵活,和写 Android 程序时代码里的 Intent 相对应,用于决定 intent 对象的选项[options]如下:
-a 指定 action,如android.intent.action.VIEW
-c 指定 category,如android.intent.category.APP_CONTACTS
-n 指定完整 component 名,用于明确指定启动哪个 Activity,如com.example.app/.ExampleActivity
5.1.1启动 Activity
adb shell am start [options]
示例:
#指定完整 component 名,用于明确指定启动哪个Activity
$adb shell am start -n
如: #表示调起微信主界面
$adb shell am start -n com.tencent.mm/.ui.LauncherUI
5.1.2启动 Service
adb shell am startservice [options]
示例:
表示调起微信的某 Service。
$adb shell am startservice -n com.tencent.mm/.plugin.accountsync.model.AccountAuthenticatorService
5.1.3 发送广播
adb shell am broadcast [options] 可以向所有组件广播,也可以只向指定组件广播。
示例:
#向所有组件广播 BOOT_COMPLETED (开机广播)
$adb shell am broadcast -a android.intent.action.BOOT_COMPLETED
#如:只向 org.mazhuang.boottimemeasure/.BootCompletedReceiver 广播 BOOT_COMPLETED:
$adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -n org.mazhuang.boottimemeasure/.BootCompletedReceiver
action 触发时机
android.net. conn.CCNNECTVITY_CHANGE 网络连接发生变化
android.intent.actian.SCREEN_ON 屏幕点亮
android.intent.actian.SCREEN_CFF 屏幕熄灭
android.intent.actian.BATTERY_Low 电量低,会弹出电量低提示框
android.int ent.actian.BATTERY_OKAY 电量恢复了
android.intent.actian.BOOT_COMIPLETED 设备启动完毕
android. intent.actian.DEVCE_STORAGE_LOw 存储空间过低
android. intent.actian.DEMCE_STORAGE_OK 存储空间恢复
android. intent.actian.PACKAGE_ADDED 安装了新的应用
android.net.wifi.STATE_CHANGE WFi状态变为启用关闭正在启动
android.net.wifi.WIH_STATE_CHANGED WFi连接状态发生变化正在关i闭/未知
android.intent.action.BATTERY_CHANGED 电池电量发生变化
android.int ent.actian.INPUT_METHOD_CHANGED 系统输入法发生变化
android.intent.actian.ACTON_POWER_CONNECTED 外部电源连接
android. int ent.action.ACTON_POWER_DISCONNE CTED 外部电源断开连接
android.intent.actian.DREAMING_STARTED 系统开始休眠
android. intent.actian.DREAMING_STOPPED 系统停止休眠
android. intent.actian.WALLPAPER_CHANGED 壁纸发生变化
android.intent.actian.HEADSET_PLUG 插入耳机
android.intent.actian.MEDIA_UNMOUNTED 卸载外部介质
android.intent.actian.MEDIA_MOUNTED 挂载外部介质
android.os.action.POWER_SAVE_MODE_CHANGED 省电模式开启
5.1.4停止
adb shell am force-stop 强制停止应用
5.2 pm (package manager)
adb shell pm 包管理
adb shell pm clear cn.com.test.mobile #清除应用数据与缓存adb shell pm clear < packagename>
5.2.1 list packages [options]
打印所有软件包,可选择只打印软件包名称中包含的软件包。
不使用参数:adb shell pm list packages, 打印设备/模拟器上的所有软件包
adb shell pm list packages -f, 输出包和包相关联的文件
adb shell pm list packages -d, 只输出禁用的包。由于本机禁用没有,输出为空。
adb shell pm list packages -e, 只输出启用的包。
adb shell pm list packages -s, 只输出系统的包。
adb shell pm list packages -3, 只输出第三方的包。
adb shell pm list packages -i, 只输出包和安装信息(安装来源)。
adb shell pm list packages -u, 只输出包和未安装包信息(安装来源)。
adb shell pm list packages --user <USER_ID>, 根据用户id查询用户的空间的所有包,USER_ID代表当前连接设备的顺序,从零开始:
adb shell pm list packages -e “ximalaya”, 只输出启用的包。