我有一个华为X1手机,版本是Android 4.2.2(我的手机是Android 4.0版本), 但之前用adb连接(包括usb/tcp)时总莫名其妙出现offline或unauthorized的问题,今天搞明白了原因并解决之:

我试过网上的一些方法,什么 adb kill-server ,然后 adb start-server 。没有任何效果。

1.

网上说从4.2.2开始,adb连接新增了认证确认功能,即用USB连接时在手机上会出现需要确认的对话框。用户点击确认后才可继续。在用户确认之前或出
现其它认证相关的问题时,adb
devices显示的状态是unauthorized。确认之后,android手机会在/data/misc/adb/adb_keys这个文件上添加
一行key数据,据推测这个key应是运行adb的PC用户的RSA公钥。之后这个PC的用户运行adb连接这个手机时就不会再出现认证确认对话框了。 (我就是没有出现“允许调试的弹窗提示”,所以我尝试删除 /data/misc/adb/adb_keys ,然后重启手机,以此来重新获得key,期望有 “允许调试的弹窗提示”,但是依旧没有“允许调试的弹窗提示”,adb devices依旧提示 unauthorized)

2.

上述说的是手机和adb(PC侧客户端)版本是4.2.2以上的情况。但如果adb的版本是旧的(不支持认证),而Android手机是新版本,这时连接
肯定是不成功的,显示的状态是offline,而不是unauthorized,Android手机上也不会出现确认对话框。这时往往用户不知道是怎么回事。(自己可以用adb version命令来查看adb的版本,大部分人的adb版本不可能是旧版本了,毕竟都是最新的 Android SDK)

3. 如果adb客户端不使用USB连接手机,而是使用TCP的方式(手机上需要启动adbd)连接手机, 例如: adb
connect
192.168.1.10,估计是由于Android版本的BUG(不知后续版本是否有修复?),连接时不会出现认证确认对话框,导致出现
unauthorized的问题。那么解决的方法是:先用USB连接并确认后,Android手机保存了该PC用户的Key后,使用TCP连接就可以直接
成功了。(这个方法最终解决了adb devices 提示 unauthorized。我先删除 /data/misc/adb/adb_keys ,重启手机,再用usb连接手机和电脑,开启usb调试功能,然后就有“允许调试的弹窗提示”的,点击确认,然后拔下usb线,用wifi的方式连接adb进行调试,问题就解决了)

 
网上还有人发现是自己的Android sdk的环境变量被篡改了,这个大家也可以看看是否是这个原因。

最新文章

  1. Appium环境搭建+cordova
  2. Log4J基础详解及示例大全
  3. SQL Server附加数据库出现错误5123的正确解决方法
  4. spring web MVC
  5. mysql分表的3种方法(转)
  6. POJ 1061 青蛙的约会
  7. NYOJ题目806HEIHEI的心情
  8. 关于缺省路由传递问题的探讨(上)[ip default-network、ip default-gateway等]
  9. 自定义PopupWindow弹出框(带有动画)
  10. 在.Net中进行跨线程的控件操作(上篇:Control.Invoke)
  11. C#中volatile的用法
  12. K - Candies(最短路+差分约束)
  13. Winsock - 1 - Winsock API
  14. C语言描述队列的实现及操作(链表实现)
  15. hdu 2888 二维RMQ模板题
  16. 阅读spring源码
  17. MySQL 基础知识梳理学习(七)----sync_binlog
  18. MagicApp说明
  19. Gradle全局变量定义及引用
  20. B-树(B+树) 学习总结

热门文章

  1. LVM逻辑卷管理测试——创建逻辑卷
  2. d3dx9库函数
  3. MAVEN 搭建APPFUSE
  4. property相关参数介绍
  5. 获取可用的处理器(CPU)核数【转】
  6. 新系统基础优化--Centos6.6
  7. Agile Development敏捷软件开发之何为敏捷开发
  8. openstack XXX-api分析
  9. 【Algorithm】选择排序
  10. apktool 在mac下的使用 -反编译安卓apk文件