设置设备进行开发(???????????? 没有权限)
设置设备进行开发(???????????? 没有权限)
我正在使用三星Galaxy Nexus手机(Android 4.0平台)。\n我在Ubuntu Linux操作系统上开发Android应用程序。我想直接在三星手机设备上运行我的应用程序,所以我执行了以下设置步骤:\n1. 在我的项目的AndroidManifest.xml文件中,在
在设置设备进行开发时出现(set up device for development (???????????? no permissions))这个错误的原因是因为没有以root用户身份运行adb服务器。
解决方法是在终端中输入以下命令:
# cd to adb for sudo cd `which adb | sed -e "s/adb//"` adb kill-server sudo ./adb start-server ./adb devices
这个方法比起其他方法更好的原因是它解释了为什么需要使用sudo,即以root用户身份运行adb服务器。
对于为什么adb需要以root身份运行的问题,没有具体的解释。
然而,adb不应该以root身份运行。如果需要这样做,那么系统配置是错误的。不要在所有命令前面加上"sudo",这会带来巨大的安全隐患。
在进行设备开发时,可能会遇到(set up device for development (???????????? no permissions))这个问题,即无法获得权限。下面是解决该问题的原因和方法。
出现该问题的原因是设备没有正确的权限设置,导致无法访问设备。解决方法是通过设置udev规则,为设备添加正确的权限。
具体的解决步骤如下:
1. 创建一个名为/tmp/android.rules的文件,并将以下内容复制进去:
SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0e79", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0502", MODE="0666"
...
2. 运行以下命令:
sudo cp /tmp/android.rules /etc/udev/rules.d/51-android.rules
sudo chmod 644 /etc/udev/rules.d/51-android.rules
sudo chown root. /etc/udev/rules.d/51-android.rules
sudo service udev restart
sudo killall adb
3. 拔掉设备与计算机之间的USB线缆。
4. 重新连接设备。
5. 运行adb devices命令,确认现在已经获得了访问设备的权限。
请注意可以使用USER="YOUR_LOGINNAME"替代MODE="0666",将YOUR_LOGINNAME替换为您的登录名。
在某些情况下,可能需要给udev规则文件命名为接近末尾的名称,例如z51-android.rules。
还需要注意,在Ubuntu Precise版本中,文件名为70-android.rules。
此外,您可以参考developer.android.com/tools/device.html官方文档中提供的类似方法。
如果以上方法过于复杂,也可以使用这个脚本来简化操作。
该方法适用于大多数设备,如果无法正常工作,可以使用lsusb命令查看vendor id。
如果重新启动udev服务仍然不起作用,可能需要运行sudo udevadm control --reload-rules命令来刷新udev规则。
对于Ubuntu 14.04,还需要添加GROUP="plugdev"。
如果遇到问题,可以尝试使用ATTR而不是ATTRS。
对于Alcatel设备,需要添加SUBSYSTEM=="usb", ATTRS{idVendor}=="1bbb", MODE="0666"。
至于ATTR和ATTRS哪个是正确的,可以参考developer.android.com/tools/device.html。
应该将这个答案标记为正确答案,因为在Linux中不应该需要使用sudo运行adb命令。
这是唯一正确的答案,非常感谢!此外,我们可以使用lsusb命令来确保所需的vendor id是否已包含在内。最奇怪的是,我的设备(OnePlus One)在升级到Android 7.1.2后突然停止工作,即使以root用户身份运行adb,但按照上述方法添加udev规则后,它又可以正常工作了。
如果不想维护列表,可以使用单行规则来处理每个Android手机,具体方法请参考stackoverflow.com/a/45006231/1778421。
问题:在使用命令"adb devices"时,出现"No command 'adb' found"的错误。
原因:可能是adb命令没有执行权限。
解决方法:重新启动adb服务器,或者通过设置udev权限来解决。
具体解决方法如下:
1. 在Linux系统下,使用以下命令来杀死并重启adb服务器:
sudo adb kill-server
sudo adb start-server
这样就可以重新启动adb服务器,并能够自动检测到几乎所有的设备。
2. 确保adb命令具有执行权限。可以通过以下命令在"/opt/android/platform-tools/"目录下查看adb的权限:
ls -l adb
如果权限不正确,可以使用以下命令修改权限:
chmod +x adb
3. 如果udev权限设置正确,就不需要以root用户身份运行adb命令。可以参考Android文档或grebulons的回答来设置udev权限。
4. 在执行adb命令之前,先断开USB连接,然后重新连接USB。这样可以重置adb,并解决问题。
解决该问题的方法有:重新启动adb服务器、设置adb命令的执行权限、设置udev权限以及重置adb等。通过以上方法,应该能够解决"No command 'adb' found"的错误。