问题

最近公司搞新产品, 准备产品迁移到安卓上, 要测试一下程序移植到安卓板上是否可行, 原来产品是运行在嵌入式linux上的, 现在做产品迁移, 正好了解下嵌入式安卓开发.

结果手机端设置ADB(android debug bride安卓调试桥)

打开手机的设置页面;

点击设置页面中的关于手机(根据手机不同, 位置可能不一致, 一般位于底部);

连续点击版本号7次进入开发者模式, 可以看到提示信息;

返回设置页面的主界面, 可以看到"开发者模式"的条目;

进入"开发者模式", 选择其中的"打开USB调试"选项;

  1. 点击弹窗中的确定, 即打开了USB调试模式;

Win端设置ADB

  1. 下载安卓windows平台SDK工具ZIP包;
  2. 解压工具包到用户指定的文件夹,例如: D:\software\platform-tools
  3. 设置adb工具的环境变量;
“此电脑” -> “属性” -> “高级系统设置” -> 右下角"环境变量"

Android 获取主板的温度 安卓主板如何调试_App

  1. 通过USB线缆连接智能手机到电脑;(修改手机成"文件传输模式"[MTD],有些手机厂商可能不需要, 但为了保持兼容性最好保持使用这种模式)
  2. 打开命令行窗口(command prompt window), 输入adb devices启动ADB保活进程;
  3. 在你的手机屏幕上可以是否允许"USB调试"的提示信息, 选择"允许", 如果你不想再在这台电脑调试时看到该提示, 勾选"一直允许此电脑"再点击"允许";
  4. 最后, 在命令提示窗口再次输入adb devices, 如果成功则可以看到你的设备序列号;

adb常用指令

查看硬件信息指令

#获取手机系统信息( CPU,厂商名称等)
adb shell "cat /system/build.prop | grep product"
#获取手机系统版本
adb shell getprop ro.build.version.release
#获取手机系统api版本
adb shell getprop ro.build.version.sdk
#获取手机设备型号
adb -d shell getprop ro.product.model
#获取手机厂商名称
adb -d shell getprop ro.product.brand
#获取手机的序列号
#方法1
adb get-serialno
#方法2
adb shell getprop ro.serialno
#获取手机的IMEI, 有三种方式,由于手机和系统的限制,不一定获取到
#方法1, 其中Device ID即为IMEI号
adb shell dumpsys iphonesubinfo
#方法2
adb shell getprop gsm.baseband.imei
#方法3
service call iphonesubinfo 1 
#获取手机mac地址
adb shell cat /sys/class/net/wlan0/address
#获取手机内存信息
adb shell cat /proc/meminfo
#获取手机存储信息
adb shell df
#获取手机内部存储信息:
adb shell df /mnt/shell/emulated #魅族手机
adb shell df /data #其它
#获取sdcard存储信息:
adb shell df /storage/sdcard
#获取手机分辨率
adb shell "dumpsys window | grep mUnrestrictedScreen"
#获取手机物理密度
adb shell wm density

操作设备的指令:

# 进行截图保存在sd卡的根目录下,名字为screen.png
adb shell screencap -p /sdcard/screen.png
# 将截图发送到本地(当前目录下),也可以发送其他文件
adb pull /sdcard/screen.png
# 删除本地文件
adb shell rm /sdcard/screen.png
# 发送电脑里的文件到设备
adb shell push screen.png /sdcard/

# 进入手机的交互环境,操作类似linux终端,exit或者Ctrl+C退出
adb shell

# 点击手机屏幕(1000,1000)的位置
adb shell input tap 1000 1000
# 输入字符串"helloworld",此处不能直接输入中文,且字符串不能有空格
adb shell input text helloworld
# 滑动屏幕,从(100, 100)到(1000,1000),经历10s(也可以当作长按屏幕来使用)
adb shell input swipe 100 100 1000 1000 10

# 查看当前运行的App, 这里Windows没有grep所以会运行失败,可以进入先进入交互环境再输入下面去掉"adb shell"命令
adb shell dumpsys window | grep mCurrentFocus
# 或者
adb shell dumpsys activity activities | grep mFocusedActivity

# 按下电源键
adb shell input keyevent 26
# 按下返回键
adb shell input keyevent 4
# 按下HOME健
adb shell input keyevent 3
# 点亮屏幕
adb shell input keyevent 224
# 熄灭屏幕
adb shell input keyevent 223

# 查看手机安装了哪些App,输出按行输出App的包名
adb shell pm list packages
# 加"-s"表示只输出系统应用
# 加"-3"表示只输出第三方应用
# 加字符串表示过滤应用名称,当然也可以使用grep

# 安装apk
adb install <packagename>
# 卸载apk
adb uninstall <packagename>


# 从桌面启动app
adb shell monkey -p <packagename> -c android.intent.category.LAUNCHER 1
# 关闭app
adb shell am force-stop <packagename>

更多指令可参考:

  1. ADB调试命令大全
  2. awesome-adb

参考文章

  1. How to Install ADB on Windows, macOS, and Linux
  2. 用ADB调试安卓手机