adb devices 出现unauthorized问题

         最近公司提供给客户的开发机器用户使用连接adb时出现adb devices时出现unauthorized问题,而且并不是每台pc都会出现该问题,存在个别pc会出现这个问题,这时第一反应是不是客户的pc配置问题,就尝试将正常的adb工具包给到客户,让客户更换工具包尝试,但是问题并没有改善,仍然出现这种情况。

         这时候就网上搜相关的信息,发现什么重启机器,重启adb,尝试都不管用。想解决这个问题就需要先了解adb连接授权的逻辑了;我们通过启动adb时会在pc本地生成一个秘钥对,一个私钥和一个公钥;Android终端连接pc时,会弹出一个提示框“The computer's RSA key fingerprint is:****",可以看出是一对RSA算法的秘钥;连接usb线后,会去查看pc端相应目录是否存在这个私钥对,如果有存在,Android端就会弹出一个对话框,进行授权adb 连接,如果没有秘钥对,首次使用adb 会自动生成一个秘钥对,再弹出授权提示,授权后会保存该秘钥对中的公钥到Android端。

      pc端秘钥对存在位置,开发机公钥(adbkey.pub)需要放在 HOME ,ANDROID_SDK_HOME环境变量定义的目录下的 .android
文件夹内: $(HOME)/ .android/adbkey.pub 或$(ANDROID_SDK_HOME)/.android/adbkey.pub如果没有定义这两个变量则会去默认的目录找秘钥对,其他版本的系统基本差不多都是这个路径

windows 7:C:\Users\user\.android \adbkey.pub
windows XP: C:\Documents and Settings\user\.android\adbkey.pub
Linux :/home/user/.android/adbkey.pub

 

当授权后,Android端会把pc的公钥文件保存到data/misc/adb/adb_keys目录,所以当出现其他pc能够正常连接,可以将正常pc的adbkey.pub,adbkey复制到问题pc上进行尝试,需要重启adb才能生效。

      如果需要不弹框,所有pc默认授权可以在UsbDebuggingActivity.java中进行修改,修改如下

    但是之前网上有个网友也出现了这个情况,但是各种操作都不行,最后,发现不知道什么原因导致HOME变量为null,所以$(HOME)/ .android/adbkey.pub文件当然是不存在的,需要注意环境变量问题,如果指向null需要更改下,配成正确的路径。

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值