Android ADB始终为unautorized的解决

现象

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

<span style="font-size:18px;">$ adb devices
List of devices attached
16F7C5DE	unauthorized</span>


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

$ adb shell
error: device unauthorized.
This adb server's $ADB_VENDOR_KEYS is not set
Try '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:

<span style="font-size:18px;">$ 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.
0x2717
0x18d1</span>
同时可以看到这个目录中有key相关的东西,原来前面提示的unautorized需要Android端确认,可是确认之前,PC端得生成一个key,并将public key发给Android端,Android设备才会弹出询问是否接受和保存debug PC key的对话框。
<span style="font-size:18px;">ls ~/.android/
adbkey  adbkey.pub  adb_usb.ini</span>

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




  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
Android Debug Bridge (ADB) 是一种用于在电脑和手机之间进行通信和控制的工具。它的运行原理是通过 PC 端的 adb server 与手机端的守护进程 adbd 建立连接,然后 PC 端的 adb client 通过 adb server 转发命令,adbd 接收命令后解析运行。 有些需要 root 权限才能执行的命令无法直接使用 adb 执行。为了解决这个问题,有两种方法可以执行高权限命令。一种是通过在 adb shell 中输入 su 命令来切换至 root 权限,另一种是让 adbd 以 root 权限执行。可以通过执行 adb root 命令来让 adbd 以 root 权限执行高权限命令。执行成功后,adb shell 的命令行提示符应该会变成 #。 然而,部分手机或高版本的手机无法通过 adb root 命令让 adbd 以 root 权限执行,会提示 "adbd cannot run as root in production builds"。如果想要将 adbd 回复为非 root 权限,可以使用 adb unroot 命令。此命令会将 adbd 还原为非 root 权限。 除了以上命令,还有一些其他的 adb 命令可以使用。例如,可以通过 adb kill-server 命令停止 adb server,通过 adb version 命令查看 ADB 版本等。同时,还可以使用 adb -P <port> start-server 命令来指定 adb server 的网络端口。 总结来说,android adb 是一种用于在电脑和手机之间进行通信和控制的工具,可以通过 adb server 与 adbd 建立连接并执行命令。为了执行高权限命令,可以使用 adb root 命令,但部分手机可能不支持。此外,还有一些其他的 adb 命令可以用来停止 adb server、查看 ADB 版本等。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Android adb说明与详解](https://blog.csdn.net/h_bpdwn/article/details/131718659)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值