openSUSE 13.2 中 Android Studio Workspace 运行 中的设备权限不足

Insufficient permissions for device in Android Studio Workspace running in openSUSE 13.2

我有一个 root 的摩托罗拉 Defy+ 运行 一个由 Quarx 创建的 Cyanogenmod v11 自定义 ROM(每晚构建)。使用 Android Studio Workspace,(ASW) v.1.1.0,当我尝试在此设备上进行调试时,我得到

????????????[null]

选择设备 window 中列出,Logcat window 显示

insufficient permissions for device

我真的很想使用这个设备和 ROM 进行调试。

当我从命令行输入 lsusb 时,我得到,

Bus 002 Device 002: ID 22b8:431d Motorola PCS

这是摩托罗拉设备的正确设备 ID。我在 /etc/udev/rules.d/ 中安装了 51-android.rules 和 71-android.rules,并在这些文件中使用了正确的摩托罗拉 ID。

我也试过撤销 USB 调试权限,从设备上的开发者选项,没有成功。

我还没有尝试过 运行 ASW 作为 root 希望可能有另一种选择;有吗?

更新: 我可以通过

进入并访问 ADB
uvachem-gsmith2:/home/greg/Android/Sdk/platform-tools # ./adb

然后我执行了一个 kill 服务器,对 root 用户执行了一个 SU 并重新启动了服务器。然后我尝试从 Android Studio 连接到设备。在设备上收到有关接受来自 PC 的 RSA 密钥的消息,说 "Yes" 然后能够将应用程序部署到设备。回到我最初的问题,是否有另一种方法可以在不以 root 身份登录的情况下访问此设备? phone 文件系统似乎存在权限问题,阻止了此...

更新 #2 这里的核心问题是权限问题。即使 运行 ADB 作为 root 将允许访问 rooted Android 设备,更好的解决方案是更改此设备的 udev 文件中的权限...将 664 重置为 666,(请参阅下面的答案)。这允许PC访问设备上的文件系统。

正在从 /etc/udev/rules.d/51-android.rules,

更改此行中的权限
#Motorola 
SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", MODE="0664", GROUP="plugdev"

到,

#Motorola 
SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", MODE="0666", GROUP="plugdev"

以不需要 运行 adb 作为 root 的方式解决了这个问题。

从长到短, 我在 Prestigio PMP5570C 平板电脑上遇到了同样的问题,

你所要做的就是在你的平板电脑上确认你想要复制数据to/from你的电脑(我忘了),然后添加@portsample 写的两行。

您可以找到您设备的 idVendor 输入

lsusb

在UBUNTU 12.04,然后你得到:

Bus 001 Device 011: ID 2207:0010,

其中 2207 是您的供应商 ID。 总结了问答...

我找到了一个对我有用的简单答案:

adb kill-server
sudo adb start-server
sudo adb devices

你会找到你的设备。希望这有帮助。

参考:http://itsfoss.com/fix-error-insufficient-permissions-device/

我在使用 Linux 机器和 Nexus 4 运行 Android 5.1

时遇到了这个问题

修复是同时启用 'debug over USB' 和 'connect as MTP'。但是,当使用相同的设备和 Android Studio 以及 OSX 上的 adb 时,情况正好相反 - 为了允许 Android Studio 识别手机,我需要禁用 'connect as MTP'。

对我和其他许多人来说,问题是关于机器上设备的访问权限。现在 android 文档中对此进行了详细记录,我认为最好的解决方案是 here

在基于 Debian 的系统上,如果您的供应商不在给定列表中,您可以 运行 lsusbdmesg 获取供应商 ID

在我的 phone Symphony W75, 在选项USB 计算机连接-> 选择连接为媒体设备(MTP) 已解决问题。

我遇到了同样的问题,我已经解决了这个问题 将your_android_sdk_path的路径添加到环境变量like

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

您希望如何通过编辑这些文件 ~/.bashrc 文件或 ~/.profile 将其添加到您的帐户或系统范围内 要么 /etc/profile, /etc/bash.bashrc, or /etc/environment 如果您想添加到系统范围的访问权限。

然后在 bin

中创建 link
sudo ln -s /your_android_sdk_path/platform-tools/adb /bin/adb

如果您使用过 adb devices 或任何命令,那么首先像

那样终止服务器
adb kill-server

然后像

一样启动服务器
adb start-server
adb devices

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

我更新了之前连接良好的设备 (Nvidia Shield),因此我知道 PC 设置已经正确。开发者设置似乎在 Android 7.0.

上有了新的布局

它位于“设置”>“首选项”>“开发人员选项”>“网络”> Select USB 配置下

在这里,我需要 select PTP 并且一切正常:

正如错误信息所说,是权限不足的问题。根据我的经验,它只发生在我的 Linux 机器上,并且在 MacOS 和 Windows 上运行良好。使用 root 权限启动你的 Android Studio 可以避免这个问题。

$sudo /your_android_studio_path/bin/studio.sh

很简单。 只需将您的 USB 模式更改为文件传输模式即可。

Android 8

MTP 不再可用。在我的 android 8 "Transfer Files" 选项上不起作用。

"Transfer photos PTP" 有效,Studio 显示设备名称。

  • 你手机上的步数phone

    1. 打开开发者选项
    2. 启用 USB 调试。
    3. 将 USB 连接更改为 PTP
  • 步骤 Linux

    1. 在控制台上 运行 sudo usermod -aG plugdev $LOGNAME

Android 9

With Android 9 使用选项 File Transfer.

他妈的……! :) 注意:我在 android 8.1 的 One+5t 上看过它...

即使我们做了以上所有操作,也有必要在您的 android 设备上做一些事情.. 除了进入开发选项菜单(usb 调试)(不要犹豫重置 "cancel authorization" 或类似的东西(我使用的是法语版;))

如果有人遇到和我一样的问题,也许对你也有用: 不要忘记在您的 phone 中授权设备(如果您不 select 总是框,则每次在 android 设备上进行 usb 连接)。此外,您可以在 phone 上取消旧的授权设备,并以适当的参数开始,以在 android 设备

上明确授权您的电脑

当您连接 android 设备时,弹出窗口或通知要求授权 mac 地址或设备的等效地址:如果您想授权 [=30] 之间的连接,请授权=] 电脑和你的 android 设备。

当您使用连接 USB 数据线时,有必要在您的 android 设备上获得授权(如果您不接受所有时间,但如果这是第一次出现此框你的设备)如果你不这样做,即使所有权利都很好,adb 设备也会显示未经授权(666、UDEV 等)

注意:感谢您的宝贵帮助。 最后一件事,对不起我的英语

我为这个错误制作了一个脚本。对我来说,它在 Fedora 28 中运行良好,但它应该在许多 Linux 发行版中运行。 只需创建一个包含自扩展脚本内容的文件。我叫它 usbDebbugingAndroidStudio.sh
给他执行权限:chmod +x usbDebbugingAndroidStudio.sh

和运行它:sudo ./usbDebbugingAndroidStudio.sh

之后查看lsusb命令显示的列表,引入Id 你的设备。 例如: 我的输出是:Bus 006 Device 002: ID 05c6:9091 Qualcomm, Inc. 所以我输入 05c6 并按回车键。

脚本:

#!/usr/bin/env bash


#This script configure Android Debug Bridge permissions to solve the following
#error: com.android.ddmlib.AdbCommandRejectedException: insufficient permissions for device
#This error is produced when you try to install an APK from Android Studio in your device.
#You can check the vendorId here:
#https://developer.android.com/studio/run/device#setting-up
#If your device's brand isn't listed check the info displayed by the command lsusb

lsusb
#My output was:
#Bus 006 Device 002: ID 05c6:9091 Qualcomm, Inc.
#The id for this line is 05c6
echo -n "Enter the id of your mobile device: "
read usbProviderId
cd /etc/udev/rules.d/
sudo touch 51-android.rules
(
sudo cat << _EOF_
SUBSYSTEM=="usb", ATTR{idVendor}=="$usbProviderId", MODE="0666", GROUP="plugdev"
_EOF_
) | sudo tee 51-android.rules

#Give read and write permissions to the file
sudo chmod a+r /etc/udev/rules.d/51-android.rules

#Kill the Android Debug Bridge server to restart it
cd $HOME/Android/Sdk/platform-tools
sudo ./adb kill-server

#If this still doesn't work unplug the usb cable and connect again.
#And repeat the last step Kill the ADB server.

我的情况:

cd /etc/udev/rules.d/
sudo chmod a+r ./*.rules  #the name of your rules files.

然后,我可以使用 adb 而不会出现此错误。

如果接受的答案不适合您,那么只需简单地按照以下步骤操作: 只需打开您的 android 工作室终端:-

亚行kill-server

亚行start-server

对我有用。

这个程序解决了我的问题:

- On the Android device, drag the top menu and select "USB for file transfer"
- Press "Run" again
  • 启用USB debugging
  • 使用 USB transer file

转到开发人员选项 -> 默认 USB 配置并更改为 PTP

运行终端中的这两个命令

 sudo adb kill-server
 sudo adb start-server

应该可以!

没有运行Linux sudo apt-get 安装 adb。不要忘记启用 USB 调试。

参考:https://developer.android.com/studio/run/device

我在 运行 来自 android studio 4.1 的 flutter 应用程序时遇到了这个问题,我确实移除了 USB 电缆并插入第二个 USB 端口及其工作:),

我正在写这篇文章,如果有人遇到同样的问题,那么他们可以获得帮助。

Fedora 32 上也有同样的问题,要解决这个问题试试这个:

adb kill-server
adb start-server