12.04上的“ adb push”命令出现“权限不足”错误


57

当我尝试将apk文件推送到平板电脑中时,出现此错误,请帮帮我。

adb server is out of date.  killing... 
* daemon started successfully * 
error: insufficient permissions for device.

先谢谢您的帮助。


1
user84207的答案得到了Android官方开发人员文档的引用支持,比Anwar Shah接受的答案要好得多,因为我们应尽可能避免以root身份运行守护程序。以root用户身份运行adb会使计算机容易受到更多攻击。
nealmcb 2015年

Answers:


20

我有时在Ubuntu上也看到过同样的错误。一种有效的解决方法是使用sudo命令运行adb 。例如,如果您使用app.apksdcard,则命令为

sudo adb push app.apk /mnt/sdcard

另外,请确保在“应用程序”设置(在GingerBread中)或“开发”部分(在IceCream Sandwich及更高版本中)中选择了“ USB调试”模式。如果adb已经在运行,则应首先使用以下命令将其杀死sudo adb kill-server

希望这会有所帮助。


我知道了,但仍然会尝试这种方法...感谢您的帮助
Neha Sharad Umachigi13年

5
“我明白了” ...如果您找到解决方案,请有礼貌地分享,以便其他人可以受益(因为当您提出问题时,您试图使自己受益)。例如,我现在遇到了这个问题,但是即使它与您描述的完全一样,我也不得不转到其他地方。
erjoalgo 2013年

2
这个答案是冒险的,因为adb中的错误可能会占据整个计算机。user84207使用udev规则的答案(避免引用该问题)得到了官方Android开发人员文档的引用支持。
nealmcb 2015年

这是最简单,最简单且至少可以解决该问题的方法。
安华

注意:这对我有用,因为sudo找到的安装版本adb不同于非sudo的安装版本。这就是这样做的原因,而不是因为adb它本身需要更多特权。
凯文·库珀

61

我遇到了同样的问题。添加指示udev规则在这里的伎俩:

以root用户身份登录,创建文件/etc/udev/rules.d/51-android.rules并添加如下一行,以向该plugdev组中的任何人授予权限:

SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666", GROUP="plugdev"

在此示例中,供应商ID为HTC。您需要使用设备的供应商ID,可以通过运行lsusb并搜索以下行来获得

Bus 002 Device 009: ID 2a47:9e18

在此示例中,您的供应商ID为2a47,因此您必须替换0bb42a47。因此,正确的行应为:

SUBSYSTEM=="usb", ATTR{idVendor}=="2a47", MODE="0666", GROUP="plugdev"

现在为文件分配读取权限,重新加载udev并重新加载adb守护程序:

sudo chmod a+r /etc/udev/rules.d/51-android.rules
sudo udevadm control --reload-rules
adb kill-server
adb start-server

您可能必须断开连接,然后将设备重新连接到USB端口。


9
您可以通过lsusb命令获取USB供应商ID。它是结肠分离对的第一部分。例如18d1:4e22表示供应商ID为18d1。
彼得·兰伯格

添加新规则文件后,您可能需要“触发” udev(尽管我不确定)。这是“触发” askubuntu.com/questions/82470/…的一种方法。
user29020 2015年

2
和/或您可能需要断开并重新连接设备?但是这个答案确实对我有用,并且比以root身份运行adb更好。您的Ubuntu用户也必须是该plugdev组的一部分。跑id出来找出答案。
nealmcb 2015年

2
如果您必须使用许多设备,则此仓库
zamber 2016年


22

Jorch914对StackOverflow的回答为我解决了这个问题:

好的,所以我终于找到了问题,显然在此设备上,您必须设置为以摄像头连接(即使已启用USB调试)

在此处输入图片说明

此外,此链接还介绍了设置过程


1
是的,就是这样!我必须在Android N上“选择USB配置”,默认情况下将其设置为“正在充电”。
Dan Dascalescu

1
不管出于什么原因,我总是能够将像素插入Mac并开始工作,但是当我移至CentOS开发工作站时,我不得不这样做,以提示其进行调试权限。谢谢
bsautner '17

2
为我工作。诀窍似乎是将其从“充电”更改为其他任何原因。
Bim


10

我只是遇到了同样的问题,但是这就是我能够解决的问题:

  • 您必须通过发出以下命令来杀死现有的adb服务器:(adb kill-server这可能是错误的,但是我使用AND而不是sudo发出了该命令
  • 通过发出以下命令以适当的权限启动adb服务器: sudo adb start-server
  • 瞧。您可能知道发出所需的任何命令

不知道是否知道,但是有一个包含adb的软件包。我之所以这样提,是因为我注意到您正在引用旧版本的adb。您可以通过在命令行中发出以下命令进行安装:sudo apt-get install android-tools-adb

我希望这有帮助。


平台工具的亚行可能是较新的;同时,这些工具甚至可以单独下载。
马丁·泽特勒

2

今天我遇到了insufficient permissions for device错误,尽管adb就在几分钟前就已经按预期工作了。现在我得到:

$ adb devices
List of devices attached 
????????????    no permissions

$ adb shell
error: insufficient permissions for device

遇到错误之前,我已经禁用了Media device (MTP),因为我认为我不需要使用MTP。但是,似乎USB调试或至少某些adb命令要求将Media device (MTP)其启用。

Media device (MTP)在Android 4.4上启用,请转到:

Settings
Storage
The "..." menu (in the upper right corner)
USB computer connection
Media device (MTP)

MTP被禁用时,lsusb显示如下:

Bus 002 Device 071: ID [idVendor1]:[idProduct1] Google Inc.

启用后MTP,lsusb将显示以下内容:

Bus 002 Device 072: ID [idVendor2]:[idProduct2] [idVendor string]

根据MTP启用或禁用,idVendor和idProduct确实会更改。

我不是Android专家,因此上述行为可能是我的特定手机型号所特有的。


0

可能是由于另一个原因。我只是在尝试在设备上安装apk时收到此错误:

$ adb install platforms/android/build/outputs/apk/android-armv7-release.apk 
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
error: insufficient permissions for device
- waiting for device -

发生这种情况是因为设备未在正确的模式下就绪。该设备正在通过USB共享其4G连接。

可以这样知道:

$ adb devices -l
List of devices attached
* daemon not running. starting it now on port 5037 *
* daemon started successfully *

33332EF19F3D00EC       no permissions usb:1-1.2

因此,足以禁用电话上的连接共享并重新启动。

通常,adb device在尝试将文件推送到设备上之前,请确保通过命令获得以下结果

$ adb devices -l
List of devices attached
33332EF19F3D00EC       device usb:1-1.2

在这些情况下,无需终止或重新启动ADB服务器。

如果您已安装设备以通过USB进行数据传输,则可能情况相同


0

我遇到了同样的问题,收到的权限不足。我所做的是撤销了笔记本电脑的USB授权。然后停止并开始USB调试。将其插回笔记本电脑,并授予USB调试权限。


1
您能否提供有关此过程的更多信息?逐步进行比较理想,因此OP可以按照您的示例进行操作。:)
ThatGuy's

0

我遇到了同样的问题,我通过将your_android_sdk_path的路径添加到环境变量中来解决了这个问题,例如

sudo export $PATH:/your_android_sdk_path/platform-tools/adb

它你的心愿你怎么想这个宽通过编辑这些文件添加到您的帐户或系统 ~/.bashrc文件或者~/.profile 或者 /etc/profile, /etc/bash.bashrc, or /etc/environment如果u要添加到系统级访问。

然后在bin中创建该链接

sudo ln -s /your_android_sdk_path/platform-tools/adb /bin/adb

如果您使用过adb设备或任何命令,请先终止服务器,例如

adb kill-server

然后像启动服务器

adb start-server
adb devices

现在您可以看到设备正确列出,没有问题



0

还有另一种可能性:USB绑定也与adb冲突。禁用它可以为我解决问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.