前提
目前正在使用华为p30pro,想要设置第三方桌面为默认桌面,因此需要adb调试配合小黑盒禁用原生桌面,但使用adb命令时总出现unauthorized device错误,手机上usb调试和adb调试都开了,adb kill-server也没有用,后来查到这个网址,问题解决。
第一个链接是日文,其中引用的文章(第二个链接)是英文,所以在这里简单介绍一下文中列出的解决办法。
解决
1.删除电脑中ADB生成的key file(adbkey&adbkey.pub),然后重启adb服务,自动重新生成这个文件
你的电脑中adbkey文件(无后缀名)和adbkey.pub(可能有可能没有)可能在C:\android
或C:\Users\*username*\.android
或C:\Windows\System32\config\systemprofile\.android
这三个位置,我的文件在第二个位置,但可能因人而异。
首先你需要在这三个位置中的某一个里找到这两个文件然后删除。
然后打开adb.exe输入adb kill-server
,完成后输入adb start-server
,之后或许还需要输入adb shell
,这时你的手机应该可以弹出一个授权框了,我的问题就是用这个方法解决的。
如果这个方法不成功,也可以试试点击手机上Revoke USB Debugging Authorizations
(开发者选项内),移除所有usb调试权限后重新尝试。
2.电脑中没有adbkey或者adbkey.pub两个文件,修改环境变量或重装手机驱动
在电脑的用户环境变量中找到指向C:\Android
的环境变量,删除它并重启电脑,尝试adb调试,此时你的手机应该能弹出授权框了。
若还不成功,可以尝试重装手机驱动。在设备管理器中找到你的手机(可能在便携设备中),右键属性,在属性窗口中你能找到驱动程序菜单,卸载驱动程序然后重启电脑,此时你的电脑应该在为你自动安装这一驱动,如果没有自动安装,也可以手动搜索安装。一切完成后尝试adb调试。
3.上面的方法一个都不成功,或者开发者选项中没有Revoke USB Debugging Authorizations
,可以尝试在手机上手动建立adb_keys文件
这个方法来自上面第三个链接,要求你的手机有root权限并且刷入了自定义的recovery(如TWRP或TerminalEmulator)。我的手机没有root所以我没有尝试过这个方法,这一部分基本是原文的翻译,若有问题可以在原文论坛提问。
思路在于将手机授权调试时adb自动为你完成的事情(添加设备公钥)转为手动完成,因此也适用于授权虚拟设备。
当你的手机授权一台电脑adb调试权限的时候,安卓系统会将电脑上ADB提供的一个公钥写入手机上的一个叫做adb_keys
的文件。这个文件位于/data/misc/adb/
,格式是每一行一个key,这个key就是手机授权的电脑所提供的公钥。
因此,你可以选择手动创建一个adb_keys
文件,或者如果你有另外一支授权了该电脑的安卓设备的话,也可以直接复制这个文件到你的手机中。
- 手动创建
首先你需要找到电脑上ADB公钥的位置,也就是上文所说的adbkey.pub
文件,这个文件中只有一行编码。Windows一般在C:\Users\<my profile>\.android\adbkey.pub
,Linux和OSX可能在~/.android/adbkey.pub
。将adbkey.pub
文件中仅有的一行编码复制并粘贴到手机上adb_keys
文件的最后一行,如果没有这个文件就手动创建,最后设置文件权限chmod 0644
并重启手机。
如果你想取消所有调试权限但手机上没有Revoke USB Debugging Authorizations
这个选项,可以直接删除adb_keys
文件。
- 复制另一台设备的
adb_keys
文件
很简单,在另一台已授权设备的/data/misc/adb/
路径找到adb_keys
并复制到要调试手机的相同位置即可。