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

Neh*_*igi 60 command-line android

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

adb server is out of date.  killing... 
* daemon started successfully * 
error: insufficient permissions for device.
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助。

erj*_*lgo 63

我遇到了同样的问题。按照此处所示添加 udev 规则即可解决问题:

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

SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666", GROUP="plugdev"
Run Code Online (Sandbox Code Playgroud)

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

Bus 002 Device 009: ID 2a47:9e18
Run Code Online (Sandbox Code Playgroud)

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

SUBSYSTEM=="usb", ATTR{idVendor}=="2a47", MODE="0666", GROUP="plugdev"
Run Code Online (Sandbox Code Playgroud)

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

sudo chmod a+r /etc/udev/rules.d/51-android.rules
sudo udevadm control --reload-rules
adb kill-server
adb start-server
Run Code Online (Sandbox Code Playgroud)

您可能必须断开连接并再次将设备连接到 USB 端口。

  • 您可以通过 lsusb 命令获取 USB 供应商 ID。它是冒号分隔对的第一部分。例如 18d1:4e22 意味着供应商 ID 是 18d1。 (9认同)
  • 和/或您可能需要断开并重新连接设备?但是这个答案确实对我有用,并且比以 root 身份运行 adb 好得多。你的 Ubuntu 用户也必须是 `plugdev` 组的一部分。运行 `id` 来找出答案。 (2认同)
  • 如果您必须使用大量设备 https://github.com/M0Rf30/android-udev-rules,此 repo 非常有用 (2认同)

kas*_*kas 26

Jorch914 在 Stack Overflow 上的回答为我解决了这个问题:

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

在此处输入图片说明

同时此链接描述了设置过程

  • 是的,就是这样!我必须在 Android N 上“选择 USB 配置”,默认设置为“充电”。 (2认同)
  • 为我工作。诀窍似乎是将其从“充电”更改为其他内容,why.ever。 (2认同)

Anw*_*war 21

我有时在 Ubuntu 上看到同样的错误。解决此问题的解决方法是使用sudo命令运行 adb 。例如,如果您正在推送app.apksdcard,则命令将是

sudo adb push app.apk /mnt/sdcard
Run Code Online (Sandbox Code Playgroud)

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

希望这会有所帮助。

  • “我明白了”...如果您找到了解决方案,请礼貌地分享,以便其他人受益(正如您在提出问题时寻求使自己受益一样)。例如,我现在遇到了这个问题,但我不得不寻找其他地方,即使它与您描述的问题完全相同。 (5认同)
  • 这个答案是有风险的,因为 adb 中的错误可以接管整个计算机。使用 udev 规则由 user84207 提供的答案(参考 Android 官方开发人员文档支持)避免了该问题。 (2认同)

Nic*_*oul 11

这两个简单的命令为我解决了这个问题:

adb kill-server
adb start-server
Run Code Online (Sandbox Code Playgroud)

请注意,与半新手的答案不同,我不需要sudo.


sem*_*bie 10

我刚刚遇到了同样的问题,但这是我如何解决的:

  • 您必须通过发出以下命令来终止现有的 adb 服务器:(adb kill-server这可能是错误的,但我在没有 sudo 的情况下使用 AND 发出了它
  • 通过发出以下命令以适当的权限启动 adb 服务器: sudo adb start-server
  • 瞧。您可能知道发出您需要的任何命令

不确定您是否知道,但是有一个包含 adb 的包。我提到这一点是因为我注意到您正在获得对旧版 adb 的引用。您可以通过在命令行中发出以下命令来安装:sudo apt-get install android-tools-adb

我希望这有帮助。