ADB

场景

win+R打开cmd命令行,运行adb'adb'不是内部命令或外部命令,也不是可运行的程序或批处理文件。如图:
ADB
也可报error:device not found

分析

  • 'adb'不是内部命令或外部命令,也不是可运行的程序或批处理文件
    没配环境变量。环境变量即各应用程序用信息,这里主要没配Path,Path即.exe.bat程序执行路径。输命令后计算机先于当前目录(一般C:\User\Administrator)找adb.exe,没则通环境变量Path找(Path中各路径以英文格式;隔开)。Path各路径都没adb.exe'adb'不是内部命令或外部命令,也不是可运行的程序或批处理文件
  • error:device not found
    没开Android虚拟机。因adb shell命令实际对当前虚拟机操作,需进当前虚拟机文件结构。没开虚拟机报error:device not found

解决

  • 'adb'不是内部命令或外部命令,也不是可运行的程序或批处理文件

    • adb.exe路径加入Path,adb.exe位于sdk目录下platform-tools,正确路径E:\AndroidSdk\platform-tools。将该路径追加到系统或用户环境变量Path即可,分号隔开。

    • 先dos环境进patform-tools目录(cd E:\AndroidSdk\platform-tools),再用dir(Windows下)可看到列表有adb.exe,这时执行adb shell命令即可。
  • error:device not found
    开虚拟机,确保已解错一,输adb shell可正常进Android虚拟机结构。

常用命令

  • adb start-server
    开adb服务
  • adb kill-server
    终止adb服务
  • adb devices
    列所有连adb设备,包真机和模拟器
  • adb version
    显adb版本
  • adb install
    将指定app安装到唯一连adb设备,后跟参数安装包文件名
  • adb install -r
    安装应用程序,保留原应用程序数据
  • adb uninstall
    将包名指定app卸自目标设备,后跟参数应用程序包名
  • adb uninstall -k
    将包名指定app卸自目标设备,保留配置文件和缓存
  • adb push
    将本机文件或目录拷贝到目标设备文件系统
  • adb pull []
    将目标设备文件或目录拷贝到本机
  • adb shell
    进目标设备Linux Shell环境,在该环境可执行一些Linux命令。如Linux Shell环境执行ps查android设备所有运行进程,执行exit退出Linux Shell环境
  • adb shell dumpsys activity
    列目标设备activity栈(back stack)和任务(task)信息,还有其它组件一些信息和一些关于进程信息
  • adb shell dumpsys packages
    列一些系统信息和所有应用信息。该命令输出庞大,三星nexus输出12000多行。信息包括Features、Activity Resolver Table等。
  • adb shell pm list permissions
    列目标平台所有权限
  • adb shell pm list packages
    列目标设备安装所有app包名
  • adb shell pm list features
    列目标设备所有feature
  • adb启动一Activity
    adb shell am start -n com.growingwiththeweb.example/.MainActivity
    adb shell am start -n com.growingwiththeweb.example/com.growingwiththeweb.example.MainActivity
  • 屏幕截图并用perl命令保存截图
    adb shell screencap -p | perl -pe ‘s/\x0D\x0A/\x0A/g’ > screen.png
  • 解锁屏幕
    adb shell input keyevent 82

注意

所有adb shell开头命令都可先执行adb shell进目标设备Linux Shell环境,然后在目标设备Linux Shell执行adb shell之后命令。如adb shell dumpsys activity可先执行adb shell,然后Linux Shell执行dumpsys activity

adb命令用于确定目标设备的参数

adb命令有三重参,本机连两或以上android设备则三参有用:

  • -d 说明adb命令目标设备是唯一连adb真机
  • -e 说明adb命令目标设备是唯一连adb模拟器
  • -s 指定adb命令目标设备

下为三参举例:

  • adb -d shell
    进唯一连adb真机Linux Shell环境
  • adb -e install weibo.apk
    将weibo.apk安装到唯一连adb模拟器
  • adb -s emulator-5554 push weibo.apk /sdcard/weibo.apk
    将weibo.apk文件复制到emulator-5554的/sdcard/weibo.apk位置

注意

据测用-d、-e或-s指定目标设备,命令偶执行较慢,原因未知。

用adb命令优势

尽管现用户操作以图形界面为主,但一些情况命令行较图形界面有优势,尤其对开发人员,命令行提效率。

  • 快卸app
    android开发发布程序手机测试,偶须卸前版以删原数据,此时只需adb uninstall <包名>即可卸。手机卸需如下步骤设置->应用程序->管理应用程序->列表找要卸载程序->点要卸载应用程序->卸载
  • 快删目录(文件夹)
    程序在sd卡创目录MyApp,该目录有数据库和一些其它文件。将程序发布手机测试需删原创目录后重创。这时只需:
    adb shell
    cd /mnt/sdcard
    rm -r MyApp
    这样即不必于文件浏览器找并删该目录。