本文转载自:http://blog.csdn.net/zahuopuboss/article/details/50831171

http://blog.csdn.net/sowhat_ah/article/details/43307907

error: device unauthorized. Please check the confirmation dialog on your device.

用adb调试android设备时,首次连接时,会出现一个授权提示:

error: device unauthorized. Please check the confirmation dialog on your device.

这时候,正常情况下,在手机上会出现一个提示框,让用户确认是否授权这个PC设备允许调试,你只需要点击确认就可以了!

工作原理是什么?

原来在我们的PC机(以windows为例)上启动了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.pub(公钥);

那么问题来了,这些密钥在PC与Android上分别存储在哪里?

首先PC上,以Windows7为例,当你首次启动adb.exe时,会在C盘的当前用户的目录下生成一个".android"目录,其中adbkey与adbkey.pub就在这个目录下;(adb.exe会在启动时读取这两个文件(没有就重新生成),所以如果你要是删除或者修改了这两个文件之后,必须要关闭adb.exe进程,重启之后才能生效;)

其次Android上,PC的公钥被保存在一个文件中"/data/misc/adb/adb_keys";

在知道了adb这种认证的原理之后,你可以在不希望自己android设备授权任何PC设备进行adb链接时,清除"/data/misc/adb/adb_keys"文件;

也可以在没有屏幕的情况下,让已经认证过的PC将你PC上的adbkey.pub中的公钥导入到android中的"/data/misc/adb/adb_keys"文件中,或者将已经认证过的PC机上的adbkey与adbkey.pub拷贝到本机上覆盖你自己的adbkey与adbkey.pub,然后重启adb.exe,即可执行adb命令;

Android设备adb授权的原理【转】相关推荐

  1. Android 设备adb连接后unauthorized解决方法

    问题: 在调研appium自动化中,最开始使用的模拟器,adb查看设备时,输入dab devices一下就连上了. 但是使用真机连接时,就出现了设备连上了,但是设备状态却不对,显示为unauthori ...

  2. Android设备adb调试

    引言 日常开发经常要对Android设备进行调试,adb是Android自带的调试工具供我们使用. 参考系统及开发软件: 系统 win10 开发软件 androidstudio 1.adb的环境配置 ...

  3. android设备离线授权方案,adb-Android Studio-设备已连接但“离线”

    adb-Android Studio-设备已连接但"离线" 这是一个很普遍的问题,但是没有一种解决方案适合我. 第一次提问,如果我弄错了约定,请您道歉. 我正在尝试将Galaxy ...

  4. AdB android 投屏 usb,QtScrcpy: Android实时投屏软件,此应用程序提供USB(或通过TCP/IP)连接的Android设备的显示和控制。它不需要任何root访问权限...

    QtScrcpy QtScrcpy可以通过USB(或通过TCP/IP)连接Android设备,并进行显示和控制.不需要root权限. 单个应用程序最多支持16个安卓设备同时连接. 同时支持GNU/Li ...

  5. 解决ADB无法连接Android设备!原因:device unauthorized!

    注意了!现在发车! 我掉的这个坑,实属天坑!并是不网上说的那么简单,重新插下USB线.重新开启USB调试.重启下Android设备就能解决的!!! 我恢复出厂设置.重新刷系统都不管用,就差最后一步US ...

  6. 【实用工具】adb检测android设备

    1.adb检测android设备 adb shell getprop net.bt.name adb shell getprop ro.build.version.sdk https://editor ...

  7. Android 安卓ADB命令远程调试 单个或多个设备调试

    文章目录 ADB局域网连接一个设备 Android设备配置 配置ADB环境 下载ADB: 配置环境变量 Windows MAC Linux ADB连接一个Android设备 ADB连接多个Androi ...

  8. 使用ADB解锁配置Android设备的新姿势

    目录 1. 什么是ADB?? 2. ADB的使用 2.1 ADB的安装 2.2 使用前的准备 2.3 查看当前的连接状态 2.4 在Fastboot模式下查看设备 2.5 常用的简单的命令 2.6 进 ...

  9. android连接此设备时打开,QtScrcpy: Android实时投屏软件,此应用程序提供USB(或通过TCP/IP)连接的Android设备的显示和控制。它不需要任何root访问权限...

    QtScrcpy QtScrcpy可以通过USB(或通过TCP/IP)连接Android设备,并进行显示和控制.不需要root权限. 单个应用程序最多支持16个安卓设备同时连接. 同时支持GNU/Li ...

最新文章

  1. 2019 AI Index 报告出炉:AI 领域取得的进展很多,但结果忧喜参半
  2. 千亿市场竟是蓝海——在线音乐教学产品观察
  3. How is Aggregation designed
  4. table合并单元格_制作课程表3——合并单元格
  5. gradle 插件 自定义_Gradle自定义插件
  6. mysql event 简单demo
  7. 怎样查看JVM的默认收集器
  8. 【Elasticsearch】极限网关 INFINI Gateway 初体验
  9. -------------------开启我的手残之旅---------我就是喜欢写笔记-------咋滴啦?-----
  10. 螺旋数组算法[中篇]--常规数学分析
  11. [转载] 深度测评Python的3种“字符串格式化”方法,看看你喜欢哪一种?
  12. Android 开机自启动应用
  13. 李航——《统计学习方法》(一)
  14. Emmet For Faster HTML CSS Workflow by Edwin Diaz
  15. python常用的几个库_盘点Python常用的20个库
  16. odbc建oracle dsn,Linux平台配置Oracle ODBC DSN的方法
  17. Mysql Field * doesn't have a default value解决方法
  18. 花菁染料cas138248-55-2齐岳生物
  19. 分享100个ASP源代码总有一个是你想要的
  20. 【UVM基础】TLM1.0 通信机制(port/export/imp/analysis_xxx)快速上手指南

热门文章

  1. 老铁 666!快手上市暴涨 200%,超 4000 员工成为千万富翁
  2. Java设计模式之策略模式与状态模式
  3. content 内容生成技术2
  4. SQL、Linq和Lambda表达式 的关系
  5. 中兴同美司法部和解协议获准:罚12亿美元
  6. [20180502]PLDEVELOP与存储过程调试.txt
  7. 尾田荣一郎参与制作!两部《海贼王》VR游戏正在开发中
  8. uvalive3209City Game
  9. Java集合工具类(三)-泛型集合工具类,用于便捷快速的定义、操作集合。包含Set的交集、并集......
  10. 用C#编写ActiveX控件(三) 转载