在 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,希望可能有其他选择;有吗?
更新:我能够通过
进入并访问 ADBuvachem-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-server
的 sudo
部分很重要。
它显示连接的设备列表 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 的系统上,如果给定列表中不存在您的供应商,您可以运行 lsusb
或 dmesg
来获取供应商 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