Lee*_*fin 274 linux ubuntu android adb fastboot
我正在使用三星galaxy nexus手机(Android 4.0平台).
我正在开发Ubuntu Linux操作系统上的Android应用程序.我想直接在三星手机设备上运行我的应用程序,所以我执行了以下设置步骤:
在我的项目AndroidManifest.xml
文件中,添加android:debuggable="true"
到<application>
元素中
在设备上,在" 设置">"安全性"中启用" 未知来源"
在设备上,在设置>开发人员选项中启用USB调试
在我的计算机上,/etc/udev/rules.d/51-android.rules
使用以下内容创建了该文件:
SUBSYSTEM=="usb", ATTR{idVendor}=="04E8", MODE="0666", GROUP="plugdev"
Run Code Online (Sandbox Code Playgroud)在我的计算机上,运行该chmod a+r /etc/udev/rules.d/51-android.rules
命令
然后,在我的计算机上,我打开了一个终端并执行了adb devices
命令,我得到了:
List of devices attached
???????????? no permissions
Run Code Online (Sandbox Code Playgroud)
由于我没有看到我的设备,只能???????????? no permissions
运行以下命令:
adb kill-server
adb start-server
adb devices
Run Code Online (Sandbox Code Playgroud)
但我仍然得到:
List of devices attached
???????????? no permissions
Run Code Online (Sandbox Code Playgroud)
为什么?我错过了什么?
War*_*ith 443
对我有用的是再次杀死并启动adb服务器.在linux上:sudo adb kill-server
然后sudo adb start-server
.然后它将检测几乎所有开箱即用的设备.
gre*_*lon 342
没有为我工作,直到我终于找到了答案在这里: http://ptspts.blogspot.co.il/2011/10/how-to-fix-adb-no-permissions-error-on.html
我正在复制文本,以防它将来消失.
使用以下内容创建名为/tmp/android.rules的文件(十六进制供应商编号来自供应商列表页面):
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"
Run Code Online (Sandbox Code Playgroud)
运行以下命令:
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
Run Code Online (Sandbox Code Playgroud)
断开手机和计算机之间的USB电缆.
重新连接手机.
运行adb devices
以确认现在它有权访问手机.
请注意,可以使用, USER="$LOGINNAME"
而不是, MODE="0666"
在.rules
文件中替换$LOGINNAME
您的登录名,即id -nu
打印什么.
在某些情况下,可能需要为udev规则文件提供一个靠近末尾排序的名称,例如z51-android.rules
.
ian*_*her 76
输入以下命令:
adb kill-server
sudo ./adb start-server
adb devices
问题是您没有以root身份运行adb服务器.
Sab*_*med 52
尝试以上所有,没有工作..当我从MTP切换到相机(PTP)时终于工作了.
Ale*_* P. 30
有很多张贴到这个问题,从坚持跑坏的答案adb
是root
(这不应该被吹捧为唯一的,甚至推荐的解决方案),以解决完全无关的问题.
这里是一个最短和最普遍的食谱采取的所有权限的关怀adb
和fastboot
一次设备:
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
Run Code Online (Sandbox Code Playgroud)
或者你可以使用我发布到这个要点稍长的版本.
至于OP在他的问题中做错的具体事情 - udev
在编辑.rules
文件后没有重新加载规则.
OP也没有告诉他手机上有哪个Android版本(又称ROM).该idVendor
值在软件中设置,因此取决于ROM.因此,04E8
他在原始规则中使用的价值仅适用于具有三星股票ROM的设备.但这不是此udev
规则的问题- 它与所有设备匹配adb
或fastboot
接口,无论其VendorID如何.
小智 16
在Archlinux中偶尔会发生这种情况.修复:
$ sudo -s
# adb kill-server
# adb start-server
Run Code Online (Sandbox Code Playgroud)
对于使用debian的用户,在Ubuntu下设置设备以创建文件"/etc/udev/rules.d/51-android.rules"的指南不起作用.我按照这里的指示.在此处放下相同内容以供参考.
以超级用户身份编辑此文件
sudo nano /lib/udev/rules.d/91-permissions.rules
Run Code Online (Sandbox Code Playgroud)
找到与此类似的文字
# usbfs-like devices
SUBSYSTEM==”usb”, ENV{DEVTYPE}==”usb_device”, \ MODE=”0664?
Run Code Online (Sandbox Code Playgroud)
然后将模式更改为0666,如下所示
# usbfs-like devices
SUBSYSTEM==”usb”, ENV{DEVTYPE}==”usb_device”, \ MODE=”0666?
Run Code Online (Sandbox Code Playgroud)
这允许adb工作,但是我们仍然需要设置设备以便识别它.我们需要以超级用户身份创建此文件,
sudo nano /lib/udev/rules.d/99-android.rules
Run Code Online (Sandbox Code Playgroud)
并输入
SUBSYSTEM==”usb”, ENV{DEVTYPE}==”usb_device”, ATTRS{idVendor}==”0bb4?, MODE=”0666?
Run Code Online (Sandbox Code Playgroud)
以上行是针对HTC的,请关注@ grebulon的帖子以获取完整列表.
保存文件,然后以超级用户身份重新启动udev
sudo /etc/init.d/udev restart
Run Code Online (Sandbox Code Playgroud)
通过USB连接手机,编译和运行项目时应检测到它.
小智 5
我有同样的问题,解决方案是同伴:(顺便说一下,你不必根设备.)
请享用.
归档时间: |
|
查看次数: |
201157 次 |
最近记录: |