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

Posted

技术标签:

【中文标题】在 openSUSE 13.2 中运行的 Android Studio Workspace 中的设备权限不足【英文标题】:Insufficient permissions for device in Android Studio Workspace running in openSUSE 13.2 【发布时间】:2015-04-26 14:20:51 【问题描述】:

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

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

选择设备窗口中列出,Logcat窗口显示

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。

我也尝试过Revoke USB debugging authority,从设备上的Developer Options,没有成功。

我还没有尝试以 root 身份运行 ASW,希望可能有其他选择;有吗?

更新:我能够通过

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

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

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

【问题讨论】:

我知道这可能是一种简单的方法,但是您是否在开发人员工具中启用了 USB 调试?之前可以尝试 adb root 。还有和 abd remount @BogdanV。是的,USB 调试已启用。请扩展您最后两句话中的建议。谢谢。 转到终端并输入“adb devices”。如果您看到您的设备,那么 Android 调试桥 (adb) 会看到该设备。如果是这样,请键入“adb root”以使 adb 能够以 root 身份发出 adb shell 命令。然后执行 adb remount 以访问设备上的整个文件系统。如果还是不行,那么问题出在 Android Studio @BogdanV。以用户或 root 身份登录时,找不到 Android 调试桥 (ADB)。我尝试了“adb devices”以及“./adb devices”,但没有返回“没有这样的文件或目录”。目前我正在使用 Android Studio 调试 Panasonic Toughpad,没有任何问题。 这很奇怪,因为 adb 是一个基本的 Android SDK 工具。也许您没有将android sdk平台工具目录添加到路径中。但无论如何,如果您有解决方案,请使用它。 【参考方案1】:

从 /etc/udev/rules.d/51-android.rules 更改此行中的权限,

#Motorola 
SUBSYSTEM=="usb", ATTRidVendor=="22b8", MODE="0664", GROUP="plugdev"

到,

#Motorola 
SUBSYSTEM=="usb", ATTRidVendor=="22b8", MODE="0666", GROUP="plugdev"

以不需要以 root 身份运行 adb 的方式解决此问题。

【讨论】:

是的,如果您向所有可以工作的用户授予权限,但您的规则文件是基于您应该做的是将您的用户帐户添加到 plugdev 组的想法而设计的,请注销,然后重新登录 - 这会为您提供原始 0664 中的“组”6。 这个文件对我来说不存在,使用 Elementary OS Freya 我刚刚在 Ubuntu 14.04 上为华为设备创建了这个文件。完美运行!感谢您的回答! 在此之后我必须重新启动 adb 服务器才能让 adb shell 工作 为我工作,但首先必须创建文件,因为它不存在,然后将 idVendor 更改为 lsusb 中的内容(请参阅 greg93 答案)。这不应该是开始在 linux 上开发的一部分。【参考方案2】:

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

您所要做的就是在平板电脑上确认您想要将数据复制到您的计算机(我忘记了),然后添加@portsample 写的两行。

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

lsusb

在 UBUNTU 12.04 中,你会得到:

总线 001 设备 011:ID 2207:0010,

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

【讨论】:

【参考方案3】:

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

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

然后您会找到您的设备。希望这会有所帮助。

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

【讨论】:

郑重声明,sudo adb start-serversudo 部分很重要。 它显示连接的设备列表 emulator-5600 离线 HNB1WC81 未授权 运行良好..在 xiomi..note 3 中【参考方案4】:

我在使用带有运行 Android 5.1 的 Nexus 4 的 Linux 机器时遇到了这个问题

修复是启用“通过 USB 进行调试”和“作为 MTP 连接”。但在 OSX 上使用同一设备和 Android Studio 和 adb 时,情况正好相反——为了让 Android Studio 能够识别手机,我需要禁用“连接为 MTP”。

【讨论】:

我在使用两种不同设备的同一个开发环境中遇到了类似的行为,并且觉得值得一提的是任何像我一样导致这篇文章的人。我有一个 LG Realm,如果我使用 MTP 连接,它只能在 Android Studio(在 Linux Mint 上运行)中工作,还有一个 LG 徽标,它只能在我使用 PTP 连接时工作。因此,为任何麻烦的设备修补这两种选项可能是值得的。确实很奇怪,我花了一个多小时才弄明白…… 这很奇怪,但事实就是如此。不确定我是否必须安装设备。 在我的 Pixel XL 上,我必须选择“使用 USB 传输照片 (PTP)”。 即使使用 Android Studio (3.0.1) 我也必须启用 MTP。 在 Android 8 上,可以在 开发者选项 -> 网络 -> 选择 USB 配置:MTP(媒体传输协议) 下找到此选项。【参考方案5】:

对我和其他许多人来说,问题与机器上设备的访问权限有关。既然这在 android 文档中有很好的记录,我认为最好的解决方案是 here

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

【讨论】:

【参考方案6】:

在我的手机中Symphony W75, 在选项 USB 计算机连接-> 选择 Connect as Media device(MTP) 已解决问题。

【讨论】:

适用于 Android 4.4【参考方案7】:

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

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

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

然后在bin中创建那个链接

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

如果您使用过 adb devices 或任何命令,请先杀死服务器,例如

adb kill-server

然后像这样启动服务器

adb start-server
adb devices

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

【讨论】:

【参考方案8】:

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

它位于设置 > 首选项 > 开发人员选项 > 网络 > 选择 USB 配置

在这里,我需要选择 PTP,然后一切正常:

【讨论】:

【参考方案9】:

如报错信息所说,是权限不足的问题。以我的经验,它只发生在我的 Linux 机器上,并且在 MacOS 和 Windows 上运行良好。以 root 权限启动您的 Android Studio 可以避免此问题。

$sudo /your_android_studio_path/bin/studio.sh

【讨论】:

【参考方案10】:

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

【讨论】:

明确地说,您在设备上进行了此更改。在我的 OnePlus 上,它位于 设置 > 开发人员选项 > 选择 USB 配置 > MTP(媒体传输协议) 这个答案对我有用。小米A2设置->已连接设备->USB->选择文件传输。 这对我也有用。我正在使用 Ubuntu 和小米红米 Note 5。只需选择文件传输而不是默认的“充电”模式。 适用于 Ubuntu、Flutter。【参考方案11】:

Android 8

MTP 不再可用。在我的 android 8 上,“传输文件”选项不起作用。

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

手机上的步骤

    打开开发者选项 启用 USB 调试。 将 USB 连接更改为 PTP

Linux 上的步骤

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

Android 9

对于 Android 9,使用选项File Transfer

【讨论】:

【参考方案12】:

什么鬼……! :) 注意:我在 android 8.1 上的 One+5t 上看到过它...

即使我们做了以上所有操作,也有必要在你的安卓设备上做点什么……除了进入开发选项菜单(usb调试)(不要犹豫重置“取消授权”或类似的东西(我是法文版;))

如果有人遇到和我一样的问题,也许它对你也有用: 不要忘记授权手机中的设备(如果您不选择始终框,则每次在 android 设备上进行 USB 连接)。此外,您可以禁止手机上的旧授权设备,并从适当的参数开始,以在您的 android 设备上明确授权您的电脑

当您连接 android 设备时,弹出窗口或通知要求授权 mac 地址或设备等效地址:如果您想授权 linux pc 和您的 android 设备之间的连接,请授权它。

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

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

【讨论】:

【参考方案13】:

我为这个错误编写了一个脚本。对我来说,它在 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", ATTRidVendor=="$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.

【讨论】:

【参考方案14】:

在我的情况下:

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

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

【讨论】:

【参考方案15】:

如果接受的答案对您不起作用,那么只需简单的以下步骤: 只需打开你的 android studio 终端:-

adb kill-server

adb 启动服务器

它对我有用。

【讨论】:

【参考方案16】:

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

- On the Android device, drag the top menu and select "USB for file transfer"
- Press "Run" again

【讨论】:

【参考方案17】: 启用USB debugging 使用USB转transer file

【讨论】:

【参考方案18】:

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

在终端运行这两个命令

 sudo adb kill-server
 sudo adb start-server

应该工作!

【讨论】:

【参考方案19】:

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

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

【讨论】:

【参考方案20】:

我在从 android studio 4.1 运行颤振应用程序时遇到了这个问题,我确实移除了 USB 电缆并插入了第二个 USB 端口并且它的工作:),

如果有人遇到同样的问题,我会写这篇文章,然后他们可以得到帮助。

【讨论】:

以上是关于在 openSUSE 13.2 中运行的 Android Studio Workspace 中的设备权限不足的主要内容,如果未能解决你的问题,请参考以下文章

OpenSuse 13.2 上的 Qt for Android

无法从 USB 安装 openSUSE 13.2 - linuxrc 启动

无法打开与您的身份验证代理的连接 opensuse 13.2

opensuse13.2上搭建caffe开发环境

在 opensuse 上构建 Python kerberos 扩展失败

无法在 OpenSuse 中启动 yandex-tank