一、adb介绍
1.1 adb简介
- Android Debug Bridge(Android调试桥)简称adb;
- Android sdk中提供的用于管理模拟器或真机状态的工具;
- 命令行工具。
1.2 adb操作手机设备
- 打开应用:
adb shell am start -n com.tencent.wework/.launch.LaunchSplashActivity
- 传输文件;
- 点击,输入,滑动等;
- 硬件操作:返回,回到首页;
- 性能指标。
1.3 adb工作原理
- 采用了客户端-服务器(C/S)模型,包括三个部分:
- 客户端 client
- 服务端 server
- 守护进程 daemon
1.4 adb环境搭建
1.4.1 Java环境安装与配置
下载地址
- 环境安装贴:Java环境准备贴-Windows
- java 官方下载地址:
- `Oracle Java 技术 | Oracle 中国
- /javase/javase-jdk8-downloads.html`
- 注意:windows 下载 exe 安装包即可
- 社区提供下载地址:
- 链接: 百度网盘 请输入提取码
- 提取码: e5wv
配置Java环境变量
- JAVA_HOME:jdk 安装根目录
- PATH:
%JAVA_HOME%
%JAVA_HOME%\bin
%JAVA_HOME%\jre\bin
- 验证环境:
java -version
参考文档
- java(windows 系统):Java 环境安装
- java(mac 系统):Java环境准备帖-Mac
1.4.2 Android SDK环境安装
下载地址
- 官方 下载地址:
- 社区提供下载地址:
- 链接: 百度网盘 请输入提取码
- 提取码: e5wv
环境配置
ANDROID_HOME D:\adt-bundle-mac-x86_64-20140702\sdk
PATH %ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools
1.4.3 检查是否安装成功
adb回车(或者adb shell)
二、adb与设备交互
2.1 adb连接手机设备
2.1.1 Android模拟器种类
- Android Studio emulator(官方);
- Genymotion(依赖网络);
- mumu,雷神,夜神,逍遥等第三方模拟器(推荐)。
2.1.2 连接模拟器(mumu为例)
- Windows:
adb connect 127.0.0.1:7555
adb devices
- mac:
adb kill-server
adb devices
2.1.3 连接真机(Android手机)设备
- 手机端:让手机处于调试模式;
- 电脑端安装手机驱动。
2.2 查看设备状态
2.2.1 查看手机状态
adb devices
-
adb get-state
2.2.2 设备状态种类
- devices:正常;
- offline:连接出现异常,设备无响应;
- unauthorized:未授权。
2.3 adb安装卸载应用
2.3.1 adb命令格式
- 格式:
adb [-d | -e | -s <serialNumber>]<command>
-
-d
:指定当前唯一通过USB连接的Android设备为命令目标(了解); -
-e
:指定当前唯一运行的模拟器为命令目标(了解); -
-s
:指定响应的设备为命令目标(重点)。
2.3.2 安装
- 普通安装:
adb install <apk路径>
- 覆盖安装/代替安装:
adb install -r <apk路径>
2.3.3 卸载
- 卸载应用:
adb uninstall 包名
- 卸载应用(不删除配置文件,保存数据缓存信息):
adb uninstall -k 包名
2.4 adb命令启动页面
2.4.1 包和Activity(活动页)的概念
- package包:是Android应用的唯一标志。
- Activity活动页:Android应用页面,一个页面就是一个Activity。
2.4.2 获取当前的页面名
- 打开手机APP应用的某个页面;
- 打开命令行工具,执行命令:
adb shell "dumpsys window | grep mCurrentFocus"
2.4.3 获取启动页面的activity
- Win:
adb logcat ActivityManager:I | findstr "cmp"
- mac:
adb logcat ActivityManager:I | grep "cmp"
2.4.4 启动页面
adb shell am start -n <包名>/<activity名>
2.5 adb文件传输
- adb push 电脑路径 设备路径
- adb pull 设备路径 电脑路径
2.6 adb日志
2.6.1 日志的级别
级别 | 详情 |
---|---|
V | 明细verbose(最低优先级) |
D | 调试debug |
I | 信息info |
W | 警告warn |
E | 错误error |
F | 严重错误fatal |
S | 无记载silent(最高优先级,绝不会输出任何内容) |
2.6.2 adb命令查看日志
adb logcat
2.6.3 查看日志常用的参数
- 参数1:
adb logcat --help
adb logcat [TAG:LEVEL ] [TAG:LEVEL]...
- 参数2:
adb logcat 打印默认日志数据
adb logcat -v time 打印时间
adb logcat -v color 使用不同的颜色,来显示每个优先级
adb logcat -f <filename> 将日志输出到文件
adb logcat > log.log 将日志保存到PC上
adb logcat -c 清理已存在的日志
2.6.4 根据条件过滤日志
adb logcat -v time "*:W" 打印Warning及以上级别的日志
adb logcat ActivityManager:D "*:S" 过滤tag为ActivityManager、level为Debug及以上级别的日志
2.6.5 常见问题
FATAL EXCEPTION: main
12-09 09:20:14.689: E/AndroidRuntime(31223): java.lang.IllegalStateException: Activity has been destroyed
12-09 09:20:14.689: E/AndroidRuntime(31223): at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1365)
12-09 09:20:14.689: E/AndroidRuntime(31223): at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:595)
12-09 09:20:14.689: E/AndroidRuntime(31223): at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:574)
12-09 09:20:14.689: E/AndroidRuntime(31223): at cn.com.topsky.community.tfd.DongTaiFragment.init(DongTaiFragment.java:209)
12-09 09:20:14.689: E/AndroidRuntime(31223): at cn.com.topsky.community.tfd.DongTaiFragment.onCreateView(DongTaiFragment.java:68)
12-09 09:20:14.689: E/AndroidRuntime(31223): at android.support.v4.app.Fragment.performCreateView(Fragment.java:1500)
12-09 09:20:14.689: E/AndroidRuntime(31223): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:927)
12-09 09:20:14.689: E/AndroidRuntime(31223): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
12-09 09:20:14.689: E/AndroidRuntime(31223): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
12-09 09:20:14.689: E/AndroidRuntime(31223): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467)
12-09 09:20:14.689: E/AndroidRuntime(31223): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:440)
12-09 09:20:14.689: E/AndroidRuntime(31223): at android.os.Handler.handleCallback(Handler.java:605)
12-09 09:20:14.689: E/AndroidRuntime(31223): at android.os.Handler.dispatchMessage(Handler.java:92)
12-09 09:20:14.689: E/AndroidRuntime(31223): at android.os.Looper.loop(Looper.java:154)
12-09 09:20:14.689: E/AndroidRuntime(31223): at android.app.ActivityThread.main(ActivityThread.java:4624)
12-09 09:20:14.689: E/AndroidRuntime(31223): at java.lang.reflect.Method.invokeNative(Native Method)
12-09 09:20:14.689: E/AndroidRuntime(31223): at java.lang.reflect.Method.invoke(Method.java:511)
12-09 09:20:14.689: E/AndroidRuntime(31223): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:809)
12-09 09:20:14.689: E/AndroidRuntime(31223): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:576)
12-09 09:20:14.689: E/AndroidRuntime(31223): at dalvik.system.NativeStart.main(Native Method)
2.7 adb命令清缓存
2.7.1 理解Android系统
2.7.2 adb shell 应用
-
应用1:
- 查看目录结构:
adb shell ls
- 查看系统当前日期:
adb shell date
- 查看系统CPU使用情况:
adb shell cat /proc/cpuinfo
- 查看系统内存使用情况:
adb shell cat /prop/meminfo
- 查看目录结构:
-
应用2:查看应用列表
- 查看所有应用:
adb shell pm list package
- 显示系统自带应用:
adb shell pm list package -s
- 显示第三方应用:
adb shell pm list package -3
- 查看所有应用:
-
应用3:
- 查看当前的页面名:
adb shell "dumpsys window |grep mCurrentFocus
- 查看当前的页面名:
2.7.3 清除应用数据及缓存
adb shell pm clear <包名>