adb使用时出现unanthorized问题
ADB 启动时,adb devices出现unanthorized问题。
-
检查USB调试是否开启。
-
重新拔插USB数据线是否有授权提示
-
重启adb :adb kill-server和adb start-server
-
如果以上方法均不可以,则使用以下步骤
-
删除C:\Users\你电脑的用户名\.android下的adbkey和adbkey.pub
-
关闭USB调试
-
重新打开一个DOS命令窗口,进入ADB中
-
先adb kill-server关闭adb驱动,然后输入adb start-server打开adb服务
-
插入USB数据线,打开USB调试,出现以下图片,只有出现了第二张图片中的序号,adb才可以配对成功。点击确定,公钥配对成功,只要出现了第二个图片,不管配不配对,本地C:\Users\你电脑的用户名\.android都会新出现两个文件adbkey和adbkey.pub
-
输入adb devices,成功打开adb服务,
-
解决原理:
-
原来当我们在window电脑上启动adb.exe进程时,adb会在本地生成一堆adbkey(私钥)和adbkey.pub(公钥);根据弹框提示"The computer's RSA key fingerprint is:xxxx",可以看出是一对RSA算法的密钥,其中公钥是用来发送给手机的;当执行"adb shell"时,adb.exe会将当前电脑PC的公钥(或者公钥)的hash值(fingerprint)发送给Android设备;这是,如果android上已经保存了这台PC的公钥,则匹配出对应的公钥进行认证,建立adb连接;如果android上没有保存这台PC的公钥,则会弹出提示框,让你确认是否允许这台机器进行adb连接,当你点击了允许授权之后,android就会保存了这台PC的adbkey.pub(公钥);
-
Adbkey和adbkey.pub的存储位置,
以window系统来说,当我们首次启动adb.exe时,会在C盘的当前用户的目录下生成一个".android"目录,其中adbkey与adbkey.pub就在这个目录下;(adb.exe会在启动时读取这两个文件(如果没有生成就重新生成),所以如果你要是删除或者修改了这两个文件后,必须关闭adb.exe进程,重启之后才能生效);
其次在android系统上,PC的公钥被保存在一个文件中"/data/misc/adb/adb_keys";