实例介绍
【实例简介】
基于Android的adb应用
实验十 Android调试工具adb
日期:2020年4月21日
一、实验目的
1、了解Android开发过程adb的重要作用。
2、学习adb调试Android设备的方法。
3、掌握adb的常用指令。
二、实验原理
1、adb的介绍
Android调试桥(adb)是一种功能多样的命令行工具,可让您与设备进行通信。adb命令可用于执行各种设备操作(例如安装和调试应用),并提供对Unix shell(可用来在设备上运行各种命令)的访问权限。它是一种客户端-服务器程序,包括以下三个组件:
客户端:用于发送命令。客户端在开发计算机上运行。您可以通过发出 adb 命令来从命令行终端调用客户端。
守护进程(adbd):在设备上运行命令。守护进程在每个设备上作为后台进程运行。
服务器:管理客户端和守护进程之间的通信。服务器在开发机器上作为后台进程运行。
adb包含在Android SDK 平台工具软件包中。您可以使用SDK管理器下载此软件包,该管理器会将其安装在android_sdk/platform-tools/下。
2、adb的工作原理
当您启动某个adb客户端时,客户端会先检查是否有adb服务器进程正在运行。如果没有,它将启动服务器进程。服务器在启动后会与本地TCP端口5037绑定,并监听adb客户端发出的命令 - 所有adb客户端均通过端口5037与adb 服务器通信。
然后,服务器会与所有正在运行的设备建立连接。它通过扫描5555到5585 之间(该范围供前 16 个模拟器使用)的奇数号端口查找模拟器。服务器一旦发现adb守护进程(adbd),便会与相应的端口建立连接。请注意,每个模拟器都使用一对按顺序排列的端口 - 用于控制台连接的偶数号端口和用于adb连接的奇数号端口。例如:
模拟器 1,控制台:5554
模拟器 1,adb:5555
模拟器 2,控制台:5556
模拟器 2,adb:5557
依此类推
如上所示,在端口5555处与adb连接的模拟器与控制台监听端口为 5554 的模拟器是同一个。
服务器与所有设备均建立连接后,您便可以使用adb命令访问这些设备。由于服务器管理与设备的连接,并处理来自多个adb客户端的命令,因此您可以从任意客户端(或从某个脚本)控制任意设备。
3、在设备上启用adb调试
要在通过USB连接的设备上使用adb,您必须在设备的系统设置中启用USB 调试(位于开发者选项下)。
在搭载 Android 4.2 及更高版本的设备上,“开发者选项”屏幕默认情况下处于隐藏状态。如需将其显示出来,请依次转到设置 > 关于手机,然后点按版本号七次。返回上一屏幕,在底部可以找到开发者选项。
在某些设备上,“开发者选项”屏幕所在的位置或命名方式可能有所不同。
现在,您已经可以通过USB连接设备。您可以通过从android_sdk/platform-tools/目录执行adb devices来验证设备是否已连接。如果已连接,您将看到设备名称以“设备”形式列出。
注意:当您连接搭载 Android 4.2.2 或更高版本的设备时,系统会显示一个对话框,询问您是否接受允许通过此计算机进行调试的RSA密钥。这种安全机制可以保护用户设备,因为它可以确保只有在您能够解锁设备并确认对话框的情况下才能执行USB调试和其他adb命令。
4、查询设备
在发出 adb 命令前,了解哪些设备实例已连接到 adb 服务器会很有帮助。您可以使用devices命令生成已连接设备的列表。
命令行输入: adb devices
作为响应:adb 会针对每个设备输出以下状态信息;
序列号:由 adb 创建的字符串,用于通过端口号唯一标识设备。下面是一个序列号示例:emulator-5554
状态:设备的连接状态可以是以下几项之一:
offline:设备未连接到 adb 或没有响应。
device:设备现已连接到 adb 服务器。请注意,此状态并不表示 Android 系统已完全启动并可正常运行,因为在设备连接到 adb 时系统仍在启动。不过,在启动后,这是设备的正常运行状态。
no device:未连接任何设备。
说明:如果包含-l选项,则devices命令会告知您设备是什么。当您连接了多个设备时,此信息很有用,可帮助您将它们区分开来。
5、安装应用
您可以使用adb的install命令在模拟器或连接的设备上安装APK:
adb install path_to_apk
安装测试APK时,必须结合使用-t选项和install命令。
6、操作指令
(1)基本指令
进入指定设备 adb -s serialNumber shell
查看版本 adb version
查看日志 adb logcat
查看设备 adb devices
连接状态 adb get-state
启动ADB服务 adb start-server
停止ADB服务 adb kill-server
电脑推文件送到设备 adb push local remote
设备文件拉取到电脑 adb pull remote local
(2)adb shell下的am 与 pm
am和pm命令必须先切换到adb shell模式下才能使用
am全称activity manager,使用am去模拟各种系统的行为,例如去启动一个activity,强制停止进程,发送广播进程
启动app am start -n {packageName}/.{activityName}
杀app的进程 am kill <packageName>
强制停止一切 am force-stop <packageName>
启动服务 am startservice
停止服务 am stopservice
pm全称package manager,使用pm命令去模拟Android行为或者查询设备上的应用等
列出手机所有的包名 pm list packages
安装/卸载 pm install/uninstall
(3)其他指令
重启机器 adb reboot
获取序列号 adb get-serialno
重启到bootloader,即刷机模式 adb reboot bootloader
重启到recovery,即恢复模式 adb reboot recovery
安装APK: adb install <apkfile>
//比如:adb install baidu.apk
卸载APK: adb uninstall <package>
//比如:adb uninstall com.baidu.search
获取机器MAC地址 adb shell cat /sys/class/net/wlan0/address
查看占用内存排序 adb shell top
查看占用内存前6的app: adb shell top -m 6
刷新一次内存信息,然后返回: adb shell top -n 1
查询各进程内存使用情况: adb shell procrank
杀死一个进程: adb shell kill [pid]
查看进程列表: adb shell ps
查看wifi密码: adb shell cat /data/misc/wifi/*.conf
7、adb连接不同模拟机设备的端口号
夜神模拟器: adb connect 127.0.0.1:62001
逍遥安卓模拟器: adb connect 127.0.0.1:21503
天天模拟器: adb connect 127.0.0.1:6555
海马玩模拟器: adb connect 127.0.0.1:53001
网易MUMU模拟器: adb connect 127.0.0.1:7555
原生模拟器: adb connect (你的IP地址):5555
【实例截图】
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论