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

我正在使用三星Galaxy Nexus手机( Android 4.0平台)。

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

  1. 在我的项目AndroidManifest.xml文件中,将android:debuggable="true"<application>元素

  2. 在设备上, 设置>安全启用未知来源

  3. 在设备上, 设置>开发人员选项启用USBdebugging

  4. 在我的电脑上,创build文件/etc/udev/rules.d/51-android.rules ,文件的内容是:

    SUBSYSTEM ==“usb”,ATTR {idVendor} ==“04E8”,MODE =“0666”,GROUP =“plugdev”

  5. 在我的电脑上运行命令chmod a+r /etc/udev/rules.d/51-android.rules

然后,我打开一个terminal,并在我的电脑上执行命令adb devices ,我得到:

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

由于我没有看到我的设备,但只有“???????没有权限”,我然后运行以下命令:

  adb kill-server adb start-server adb devices 

但我仍然得到:

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

为什么? 我在想什么?

什么对我有用就是杀死并再次启动adb服务器。 在Linux上: sudo adb kill-server然后sudo adb start-server 。 然后,它几乎可以检测到所有的设备。

没有任何工作,直到我终于在这里find答案: http : //ptspts.blogspot.co.il/2011/10/how-to-fix-adb-no-permissions-error-on.html

我在这里复制文本,以防将来消失。

使用以下内容创build一个名为/tmp/android.rules的文件(hex供应商编号取自供应商列表页面):

 SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="0e79", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="0502", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="0b05", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="413c", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="0489", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="091e", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="12d1", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="24e3", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="2116", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="0482", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="17ef", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="1004", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="22b8", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="0409", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="2080", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="0955", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="2257", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="10a9", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="1d4d", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="0471", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="04da", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="05c6", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="1f53", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="04e8", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="04dd", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="0fce", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="0930", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="19d2", MODE="0666" SUBSYSTEM=="usb", ATTRS{idVendor}=="1bbb", MODE="0666" 

运行以下命令:

 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 

断开手机和电脑之间的USB电缆。

重新连接手机。

运行adb devices以确认现在有权访问手机。

请注意,可以在.rules文件中使用, USER="$LOGINNAME"而不是, MODE="0666" ,用$LOGINNAMEreplacelogin名,即id -nu打印的内容。

在某些情况下,可能需要为udev规则文件提供一个接近结尾的名称,例如z51-android.rules

input以下命令:

adb kill-server sudo ./adb start-server adb devices

问题是你没有以root身份运行adb服务器。

试了以上,没有工作..终于工作时,我从MTP连接切换到相机(PTP)。

在Archlinux中,偶尔会发生这种情况。 修正:

 $ sudo -s # adb kill-server # adb start-server 

这个问题有很多不好的答案,从坚持以root身份运行adb (这不应该被视为唯一或甚至推荐的解决scheme)来解决完全不相关的问题。

下面是一个最简单和最普遍的方法来同时处理所有adbfastboot设备的权限:

 echo 'ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="*:ff420?:*", MODE="0666"' | sudo tee /etc/udev/rules.d/99-android.rules sudo udevadm control --reload-rules sudo udevadm trigger --verbose --action=add --subsystem-match=usb 

至于OP在他的问题上做了错误的具体事情 – 编辑.rules文件后没有重新加载udev规则。

OP也没有告诉他手机上有哪个Android版本(又名ROM)。 idVendor值由软件设置,因此取决于ROM。 所以他在原来的规则中使用的04E8的价值只适用于三星股票ROM的设备。 但是对于这个udev规则来说,这不是一个问题 – 它将使用adbfastboot接口匹配所有设备,而不pipe他们的VendorID

我遇到了同样的问题,解决scheme就像他一样:(顺便说一句,你不必为你的设备创build根目录)

  1. input“su”切换到超级用户。
  2. 你的path/ adb kill-server。
  3. 你的path/ adb启动服务器。
  4. 如果没有错误发生,您可以在root帐户中看到带有“your-path / adb devices”的设备列表。
  5. 退出超级用户。
  6. 现在您可以在您的帐户中执行“adb设备”。

请享用。

对于那些使用Debian的人来说,在Ubuntu下build立一个设备的指南来创build文件“/etc/udev/rules.d/51-android.rules”不起作用。 我遵循这里的指示。 放在这里作为参考。

以超级用户的身份编辑此文件

 sudo nano /lib/udev/rules.d/91-permissions.rules 

find类似这样的文字

 # usbfs-like devices SUBSYSTEM==”usb”, ENV{DEVTYPE}==”usb_device”, \ MODE=”0664″ 

然后将模式更改为0666,如下所示

 # usbfs-like devices SUBSYSTEM==”usb”, ENV{DEVTYPE}==”usb_device”, \ MODE=”0666″ 

这允许adb工作,但是我们仍然需要设置设备,以便可以识别。 我们需要以超级用户的身份创build这个文件,

 sudo nano /lib/udev/rules.d/99-android.rules 

并进入

 SUBSYSTEM==”usb”, ENV{DEVTYPE}==”usb_device”, ATTRS{idVendor}==”0bb4″, MODE=”0666″ 

上面的行是为HTC,按照@ grebulon的职位完整列表。

保存文件,然后以超级用户身份重新启动udev

 sudo /etc/init.d/udev restart 

通过USB连接手机,并在编译和运行项目时检测到。

与我的Galaxy S3有同样的问题。 我的问题是,idVendor值(04E8)是不正确的。 要find合适的人,请将智能手机连接到计算机,并在terminal中写入命令

  lsusb 

因为我发现所有与正确的ID相连的USB设备。 您的智能手机必须有一行显示,如下所示:

  Bus 002 Device 010: ID 18d1:d002 Google Inc. 

在我的情况。 所以正确的idVendor价值是“18d1”。 所以/etc/udev/rules.d/51-android.rules中的行必须在我的情况

  SUBSYSTEM=="usb", ATTR{idVendor}=="04E8", MODE="0666", GROUP="plugdev" 

比我在我的电脑上运行命令

  chmod a+r /etc/udev/rules.d/51-android.rules 

Everithing工作!

  1. 请按照http://developer.android.com/guide/developing/device.html上的说明进行操作;
  2. 在/etc/udev/rules.d/51-android.rules中将“0bb4”的供应商IDreplace为“18d1”。 或者添加另一行:SUBSYSTEM ==“usb”,SYSFS {idVendor} ==“18d1”,MODE =“0666”
  3. 重新启动计算机或只是重新启动udev服务。

我知道这可能会有点晚,但这是一个关于如何手动添加Android ADB USB驱动程序的非常好的文章。 在Ubuntu 14.04 LTS中手动添加Android ADB USB驱动程序

编辑添加链接内容

脚步

注意: 确保您已经在USBdebugging模式下连接了您的Android设备

打开terminal( CTRL + ALT + T )并input命令: lsusb

现在你可能会得到类似的回复:
Bus 002 Device 013: ID 283b:1024

注意:参考Bus 002 Device 008: ID 283b:1024
{idVendor}==”283b” {idProduct}==”1024″

现在input以下命令: sudo gedit /etc/udev/rules.d/51-android.rules
这将创buildandroid规则文件( 51-android.rules )或打开指定位置( /etc/udev/rules.d )中的现有文件

添加一个新行到这个文件:
SUBSYSTEM==”usb”, ATTRS{idVendor}==”283b”, ATTRS{idProduct}==”1024″, MODE=”0666″

注意使用您的设备值编辑idProductidProduct值。 保存并closures。

现在input以下命令:
sudo chmod a+rx /etc/udev/rules.d/51-android.rules – 授予读取/执行权限
sudo service udev restart – 重新启动udev服务

现在我们必须将adb_usb.ini添加到adb_usb.ini 。 input以下命令:
cd ~/.android
gedit adb_usb.ini

添加下面的值0x283b

这只不过是0x( idVendor值)。 所以用这个replace值。 尊重您的设备值保存并closures文件。

现在input以下命令:
sudo service udev restart

拔出Android设备并重新连接。
现在input以下命令:
adb kill-server
adb devices

你走了! 您的设备必须列出。

Ubuntu 14.04 LTS手动添加Android ADB USB驱动程序 复制

为我工作。

当你重新启动udev时,杀死adb服务器并启动adb服务器转到android sdk安装path,并做所有的sudo。 然后运行adb设备将解决权限问题。

我的设备是POSITIVO,我的操作系统是Ubuntu 14.04 LTS所以,我的问题是variables名称

我创build文件/etc/udev/rules.d/51-android.rules并把SUBSYSTEM=="usb", SYSFS{idVendor}=="1662", MODE="0666"

我断开设备并执行:

 $ sudo udevadm control --reload-rules $ sudo service udev restart 

在此之后,我再次连接在开发者模式的Android设备

 $ adb devices List of devices attached 1A883XB1K device 

没有拔掉

所有提供的答案都假定您可以拔下并重新连接USB电缆。 在不可能的情况下(例如,当你是远程的时候),你可以做下面的事情来实质上做什么build议udev规则将重新插入:

 lsusb 

find你关心的设备,例如:

 Bus 003 Device 005: ID 18d1:4ee4 Google Inc. Nexus 

记下它所在的公交车号码,然后执行,例如公共汽车003

 sudo chmod a+w /dev/bus/usb/003/* 

显然,这可能比你想要的更宽容(可能会有更多的设备不仅仅是这个),但你明白了。

尝试使用您的用户的主要组而不是GROUP="plugdev"

GitHub社区维护udev规则

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

这是迄今为止我见过的最完整的udev规则列表,甚至超过了目前推荐的sudo apt-get install android-tools-adb 官方文档中的 sudo apt-get install android-tools-adb ,请试试看。

在我的情况下,Ubuntu的12.04 LTS,我不得不改变我的macros达不可思议的USB模式从收费媒体,然后设备出现在亚行。 当然,在这两种情况下都已经进行了debugging。

我用苏,它开始工作。 当我用普通用户使用Jetbrains时,我发现这个问题,但在Su模式下重新启动Jetbrains后,我可以看到我的设备没有任何操作。

我使用Ubuntu 13.04和Jetbrains 12.1.4

如上所述,问题是由于没有使用root权限运行adb引起的。

我想添加我的解决scheme,运行与Android Studio 0.8.2的Ubuntu 12.04的问题。 这也将告诉你如何打开android studio没有input完整的path:

首先,通过编辑.bashrc文件将android-studio / bin添加到PATH中。

 cd ~/ gedit .bashrc //add the below line withing your .bashrc file, I prefer you to put it at the //very bottom HOME=$HOME:~/<android-studio>/bin //save file, exit terminal, open new terminal studio.sh // will now open android studio from any directory in terminal 

这将允许您从terminal内的任何目录中使用studio.sh命令运行程序。 但是,这不会允许你从任何目录terminal内运行sudo! 这将我们带回到我们的主要问题。 为此,我们需要编辑我们的/ etc / sudoers文件。

  cd /etc sudo gedit sudoers //edit the secure_path="" to include /home/<your-username>/<android-studio>/bin //save file, exit terminal, open new terminal gksudo studio.sh // will now open android studio as root from any direcotry in terminal // I use gksudo rather than sudo when opening a graphical program 

现在,adb以root身份运行,您的计算机将识别您的连接设备。 你可以从任何目录启动程序。 这只是我解决问题的方式,我以为我会分享。

您也可以尝试编辑位于/home/username/.android/的 adb_usb.ini文件。 该文件包含您想要连接的设备的供应商列表。 您只需将您的设备的ID供应商添加到新行(每行一个ID)。 然后重新启动adb服务器并重新插入设备。

它在Ubuntu 12.10上为我工作。

如果任何人在使用adb devices时遇到以下错误消息

 no permissions (verify udev rules); see [http://developer.android.com/tools/device.html] 

执行以下操作

 sudo -s adb kill-server adb start-server 

这解决了我的问题在自定义生成Android设备

就像Debian去的那样,我使用了Kali做了以上的事情。 chown命令和重新启动后,我失去了我的笔记本电脑和外部键盘/鼠标的使用。 双引导Ubuntu Studio,我启动到,装载Debian分区,打开terminal和

sudo su rm path / to / all.android.rules

都在/ libs / udev中…和/ etc / udev和

gedit /lib/udev/rules.d/91-permissions.rules

并切换回来

类似usbfs的设备

SUBSYSTEM ==“usb”,ENV {DEVTYPE} ==“usb_device”,\ MODE =“0666”

重新启动,所有键盘/鼠标再次工作。 此外,重新启动回到Kali / Debian没有android.rules和“正常”91-permission.rules和…

adb设备

像它应该的工作 – 与权限等。我仍然有我的非root用户在plugdev组。 在$ PATH中有adbpath。 在/ home / user / andy / sdk / platform-tools /

希望这可以帮助遇到这种情况的人。