我使用的是三星galaxy nexus手机(Android 4.0平台)。

我正在开发Ubuntu linux操作系统上的Android应用程序。我想直接在三星手机设备上运行我的应用程序,所以我执行了以下设置步骤:

在我的项目AndroidManifest.xml文件中,添加android:debuggable="true"到<application>元素 在设备的“设置”中,>安全启用未知源 在设备上,在设置>开发人员选项中启用了USB调试 在我的电脑上,创建了/etc/udev/rules.d/51-android.rules文件,内容如下: 子系统=="usb", ATTR{idVendor}=="04E8", MODE="0666", GROUP="插件开发" 在我的电脑上,执行chmod a+r /etc/udev/rules.d/51-android.rules命令

然后,在我的电脑上,我打开一个终端,执行adb设备命令,我得到:

List of devices attached 
????????????    no permissions

因为我没有看到我的设备,但只有????????????没有权限,然后运行以下命令:

 adb kill-server
 adb start-server
 adb devices

但我还是有:

List of devices attached 
????????????    no permissions

为什么?我错过了什么?


当前回答

sudo usermod -aG plugdev $LOGNAME

这个命令对我很管用

其他回答

请按照http://developer.android.com/guide/developing/device.html(Archived链接上的说明进行操作) 将/etc/udev/rules.d/51-android.rules中0bb4的供应商id替换为18d1 或者再加一行: 子系统=="usb", SYSFS{idVendor}=="18d1", MODE="0666" 重新启动计算机或重新启动udev服务。

这快把我逼疯了。首先,这里的一些老建议会让你的arch linux系统变砖。我不得不从备用USB启动来撤销规则破解。在我的一个案例中,我无法让我的android在插入USB时提示授权主机,并且有和其他人一样的症状:

$ sudo adb devices
List of devices attached
89MY08NPA       no permissions; see [http://developer.android.com/tools/device.html]

身为根并不重要。

进入android的USB设置,确保“使用USB”设置为“文件传输”。由于某种原因,我的手机被设置为没有数据传输,尽管我已经在这款手机上做了多年的android开发工作。一定是谷歌的某些更新将其翻转到另一个设置。

一旦将其设置为文件传输,就会提示允许从主机调试并恢复正常

使用M0Rf30/android-udev-rules GitHub社区维护udev-rules

https://github.com/M0Rf30/android-udev-rules/blob/master/51-android.rules

这是我迄今为止见过的最完整的udev-rules列表,甚至超过了目前官方文档中推荐的sudo apt-get install android-tools-adb,它为我解决了这个问题。

我尝试了上述的一些解决方案:

重启adb服务器 修改51-android.rules 把我自己加入adbusers组

它成功过一次。设备要求我授权PC,之后,一切正常。

问题是当我尝试在电脑重启后连接设备时,又出现了同样的问题。 为了克服现在这个问题,我不得不手动撤销设置->开发人员选项->USB调试授权,然后设备再次要求我授权PC,因此最终工作了。

还有一次,前面提到的撤销USB调试授权的解决方案不起作用,为了触发设备的身份验证,我不得不手动禁用/启用 设置->开发人员选项->USB调试

我使用的是ubuntu 20.04LTS。

重启udev时,关闭adb服务器,启动adb服务器,进入android sdk安装路径,在sudo上完成所有操作。然后运行adb设备即可解决权限问题。