现象

启动后连接ADB,始终无法连接,adb devices显示为没有授权,但是Android端又始终没有出现Debug权限确认的Dialog,让人疑惑不解,尝试了将Android端的Debug 认证记录取消,依然没有解决。

$ adb devicesList of devices attached16F7C5DEunauthorized


如果使用adb shell查看,那么也是说需要在Android端的对话框中确定接受:

$ adb shellerror: device unauthorized.This adb server's $ADB_VENDOR_KEYS is not setTry 'adb kill-server' if that seems wrong.Otherwise check for a confirmation dialog on your device.

但是实际上,从来就没有出现过询问是否接受PC key和调试的窗口。从后来的解决看,这个提示就是一个坑,让人走到了不正确的方向上。


再三确认了udev rules里面有对应的VID和PID,也确认了Android端的Debug开关因素。在XDA与google上面找了许久也没解决。


解决方案

最后发现是PC端的ADB配置问题,ADB需要在~/.android中配置一把,这里面有key,最为重要的是,需要将VID放入到这个文件中,例如下面的18d1就是Nexus(ASUS)的设备VID:

$ cat  ~/.android/adb_usb.ini # ANDROID 3RD PARTY USB VENDOR ID LIST -- DO NOT EDIT.# USE 'android update adb' TO GENERATE.# 1 USB VENDOR ID PER LINE.0x27170x18d1
同时可以看到这个目录中有key相关的东西,原来前面提示的unautorized需要Android端确认,可是确认之前,PC端得生成一个key,并将public key发给Android端,Android设备才会弹出询问是否接受和保存debug PC key的对话框。
ls ~/.android/adbkey  adbkey.pub  adb_usb.ini

查看adbkey和adbkey.pub的内容可以了解到,其实这个和.ssh里面的key内容类似,一个public,一个private的非对称加密key。




更多相关文章

  1. 【Android Developers Training】 74. 序言:通过无线连接设备
  2. python获取android设备的GPS信息脚本分享
  3. adb 发送文件到Android设备和从Android手机复制文件
  4. Android获得所有存储设备位置最佳方式
  5. android输入子设备类型
  6. android之内容提供者解析
  7. 【Android Developers Training】 10. 序言:支持不同设备
  8. Android导入一个工程时提示 Invalid project description
  9. Android系统移植与调试之------->如何修改Android设备添加重启、

随机推荐

  1. sql中的 where 、group by 和 having 用
  2. SQL Server 使用触发器(trigger)发送电子邮
  3. SQL 获取所有上级的实现方法
  4. SQL Server实时同步更新远程数据库遇到的
  5. MSSQL 2000 使用帮助(sql server简明教程
  6. SQL Server 2016 配置 SA 登录教程
  7. SQL Server 2016 无域群集配置 AlwaysON
  8. 解决Windows 10家庭版安装SQL Server 201
  9. SQLServer数据库中开启CDC导致事务日志空
  10. SQL Server日期加减函数DATEDIFF与DATEAD