我有一个华为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的环境变量被篡改了,这个大家也可以看看是否是这个原因。

adb devices连接提示 Android offline或unauthorized的解决办法的更多相关文章

  1. adb无法使用,提示error: unknown host service的解决办法

    此时,需要辨别电脑的5037端口被哪个应用程序占用的方法:(使用adb时需要5037端口是空闲的) 1. 打开命令行,输入命令:netstat -ano |findstr "5037&quo ...

  2. 【转】Android出现“Read-only file system”解决办法

    原文网址:http://www.111cn.net/sj/android/44496.htm 下面介绍一篇Android出现“Read-only file system”解决办法 有碰到这类问题的朋友 ...

  3. (转载)Android出现“Read-only file system”解决办法

    下面介绍一篇Android出现“Read-only file system”解决办法 有碰到这类问题的朋友可参考参考.   Android-出现Read-only file system的解决方法 输 ...

  4. Xamarin Android SDK无法更新的解决办法

    Xamarin Android SDK无法更新的解决办法   Xamarin Android SDK无法更新的解决办法,更新时候,提示警告信息:A folder failed to be moved. ...

  5. android studio 错误汇总以及解决办法

    android studio 错误汇总以及解决办法  参考 https://www.jianshu.com/p/7c7de6562231 问题1. Error:Execution failed for ...

  6. Linux提示no crontab for root的解决办法

    Linux提示no crontab for root的解决办法 安装crontab:yum install crontabs 说明:/sbin/service crond start //启动服务/s ...

  7. 【转】Ubuntu 上编译Android出现cannot find -lstdc++解决办法

    [转]Ubuntu 上编译Android出现cannot find -lstdc++解决办法 在Ubuntu 12.04 x86_64机器上编译Android出现下面错误,是因为找不到32bit的li ...

  8. installshield制作的安装包卸载时提示重启动的原因以及解决办法

    原文:installshield制作的安装包卸载时提示重启动的原因以及解决办法 有时候卸载installshield制作的安装包程序,卸载完会提示是否重启电脑以完成所有卸载,产生这个提示的常见原因有如 ...

  9. Ubuntu中Android SDK Manager无法更新解决办法

    Ubuntu中Android SDK Manager无法更新解决办法http://hi.baidu.com/petercao2008/item/d7a64441f04668e81e19bc1a

随机推荐

  1. mysql5.6特殊字符问题

    问题描述: 在搭建redis监控cache-cloud软件,发现对建立cache-cloud的库,无法删除 drop database cache-cloud; 很奇怪..... 问题解决: 百思不得 ...

  2. [JavaScript模块演化简史]摘要

    来源于:https://zhuanlan.zhihu.com/p/26231889 # JavaScript 模块化 早期的JavaScript并没有模块化解决方案.随着单页应用与富客户端的流行,出现 ...

  3. ios中UIWebview和asiHttprequest的用法

    原文地址为:http://www.cnblogs.com/pengyingh/articles/2343062.htmlasiHttprequest的用法 它对Get请求的响应数据进行缓存(被缓存的数 ...

  4. (原)torch中的序列化

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/6591667.html 参考网址: https://github.com/torch/torch7/bl ...

  5. HBase Go客户端Row构造注意事项

    1. Hbase 的Go客户端语言使用方法 2. Hbase的Row使用注意事项 2.1. Row的前几个字段尽量散列 2.2. Row的排序是把所有Row中的字符做字典排序 我们最近在一个项目中使用 ...

  6. Xcode使用小技巧-filter查找功能和查看最近修改的文件

    今天偶然发现了关于Xcode的一个小技巧: 1.查看最近修改的文件 2.使用filter查找制定文件 没错,就是下面这个东西,很容易忽略的一个小工具,在Xcode左下角位置. 通过这个,我们能够在整个 ...

  7. leetcode770. Basic Calculator IV

    此题真可谓是练习编程语言的绝好材料 ! import java.util.*; class Solution { class Item { Map<String, Integer> var ...

  8. MATLAB 的条件分支语句

    MATLAB 的条件分支语句: 1)if...end  2)if...else...end  3) if...elseif...elseif...else...end  a=; fprintf('\n ...

  9. umdh windbg分析内存泄露

    A.利用工具umdh(user-mode dump heap)分析:此处以程序MemoryLeak.exe为例子 1.开启cmd 键入要定位内存泄露的程序gflags.exe /i memroylea ...

  10. Centos6.5使用yum安装mysql——快速上手必备(转)

    第1步.yum安装mysql[root@stonex ~]#  yum -y install mysql-server安装结果:Installed:    mysql-server.x86_64 0: ...