设置设备进行开发(???????????? 没有权限)

11 浏览
0 Comments

设置设备进行开发(???????????? 没有权限)

我正在使用三星Galaxy Nexus手机(Android 4.0平台)。\n我在Ubuntu Linux操作系统上开发Android应用程序。我想直接在三星手机设备上运行我的应用程序,所以我执行了以下设置步骤:\n1. 在我的项目的AndroidManifest.xml文件中,在元素中添加了android:debuggable=\"true\"。\n2. 在设备上,在“设置 > 安全性”中启用“未知来源”选项。\n3. 在设备上,在“设置 > 开发者选项”中启用“USB调试”选项。\n4. 在我的电脑上,创建了/etc/udev/rules.d/51-android.rules文件,内容如下:\nSUBSYSTEM==\"usb\", ATTR{idVendor}==\"04E8\", MODE=\"0666\", GROUP=\"plugdev\"\n5. 在我的电脑上,运行了chmod a+r /etc/udev/rules.d/51-android.rules命令。\n然后,在我的电脑上打开终端并执行adb devices命令,我得到了以下结果:\nList of devices attached \n???????????? no permissions\n由于我只看到了???????????? no permissions而没有看到我的设备,所以我接着运行了以下命令:\nadb kill-server\nadb start-server\nadb devices\n但是我仍然得到了以下结果:\nList of devices attached \n???????????? no permissions\n为什么?我漏掉了什么?

0
0 Comments

在设置设备进行开发时出现(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",这会带来巨大的安全隐患。

0
0 Comments

在进行设备开发时,可能会遇到(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

0
0 Comments

问题:在使用命令"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"的错误。

0