最近玩Android,发现电脑在公司电脑上可以正常连接,回到家里就不行了。用USB线连接手机和电脑,打开cmd,输入adb devices -l, 结果显示可以识别手机,但是状态为offline。

因为是offline,所以你也无法通过adb logclient得到手机的运行日志。考虑到adb的运行原理,adb包括三个组成部分:

1. 运行于电脑上的adb客户端,eclipse上面的ADT插件和DDMS也可以产生adb客户端。

2. 运行于电脑上作为后台进程运行的服务端,负责管理客户端与设备上的adb守护程序之间的通讯。

3. 以后台进程的形式运行于设备上的守护进程。

工作步骤如下:

使用adb命令启动客户端,客户端会去确认是否有一个adb服务进程在运行。如果没有,则启动。服务器运行,adb服务器就绑定本地的TCP端口5037并监听adb客户端发来的命令,接着服务器将所有运行的设备建立连接,通过扫描所有的5555到5585范围内的奇数端口来定位所有的设备。一旦服务器找到adb守护进程就建立连接。设备实例会取得两个连续的端口,奇数端口用来响应adb连接,偶数端口用来连接控制台。

回到问题本身,在其他电脑上能直接连接,说明手机没有问题,可能是服务端进程启动有问题。使用命令adb help可以得到adb的帮助文档。

adb get-serialno   可以得到设备的serial numberadb get-state       可以得到设备的状态offline|bootloader|device(现在显示的事offline)adb status-window   可以连续打印设备状态(事实证明这个确实有用)

接着,打开另外一个终端

adb kill-server   kill server进程adb start-server 确保server进程启动显示:* daemon not running. starting it now on port 5037 ** daemon started successfully *另外一个窗口显示:C:\Users\asus\Desktop>adb status-window[2J[2HAndroid Debug BridgeState: unknown[2J[2HAndroid Debug BridgeState: device貌似已经OK了

这个时候再来检查设备

adb devices -l

已经有内容输出了:

C:\Users\asus>adb devices -lList of devices attached34bd66f2        device

貌似蛮有意思的。。。

更多相关文章

  1. android wifi开发
  2. Android跨进程通信IPC之11——Binder驱动
  3. AIDL的实现
  4. Android(安卓)Low Memory Killer
  5. android多媒体框架之流媒体框架----base on jellybean(九)
  6. MQTT+ApolloServer实现Android的消息推送功能
  7. adb的一些命令
  8. 一篇文章看明白 Android(安卓)系统启动时都干了什么
  9. Android(安卓)StrictMode使用

随机推荐

  1. android异步任务详解 AsynTask
  2. ionic实战-扫描二维码下载app,同时支持an
  3. surfaceView 与view
  4. Android 关于GridView 以及图片处理一些
  5. 使用Android studio 查看其它app的布局的
  6. Google 菜市场(Android Market)上不去的解
  7. Android注解原理与常用注解框架
  8. Android 外接键盘的按键处理
  9. [android]android自动化测试十四之dumpsy
  10. android客户端与服务器交互数据(基于SAOP