在openSUSE 13.2中运行的Android Studio工作区中的设备权限不足


73

我有一个扎根的Motorola Defy +,它运行由Quarx创建的Cyanogenmod v11自定义ROM(每晚构建)。使用Android Studio Workspace(ASW)v.1.1.0,当我尝试在此设备上调试时,

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

在“选择设备”窗口中列出,并显示“ Logcat”窗口

insufficient permissions for device

我真的很想将此设备和ROM用于调试目的。

当我lsusb从命令行输入时,

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

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

我也尝试过从设备上的开发人员选项撤消USB调试权限,但是没有运气。

我没有尝试以root用户身份运行ASW,希望有其他选择。在那儿?

更新:我能够通过以下方式进入并访问ADB

uvachem-gsmith2:/home/greg/Android/Sdk/platform-tools # ./adb

然后,我做了一个kill服务器,对root用户做了一个SU,然后重启了服务器。然后,我尝试从Android Studio连接到设备。在设备上收到一条有关从PC接受RSA密钥的消息,说“是”,然后便能够将应用程序部署到设备上。回到我最初的问题,是否有另一种无需root用户登录即可访问该设备的方法?似乎电话文件系统上存在权限问题,阻止了此操作...

更新#2这里的核心问题是权限问题。即使运行ADB为根将允许访问植根Android设备,更好的解决办法是改变权限在该设备的udev的文件...重置664到666,(见下面的答案)。这使PC可以访问设备上的文件系统。


我知道这可能是一种简单的方法,但是您是否在开发人员工具中启用USB调试?可以尝试使用adb根目录。还有abd重新安装
Bogdan V.

@BogdanV。是的,已启用USB调试。请扩展最后两句话中的建议。谢谢。
portsample

转到终端并输入“ adb devices”。如果看到设备,则Android调试桥(adb)会看到设备。如果是这样,请键入“ adb root”,使adb能够以root身份发出adb shell命令。然后执行adb重装以访问设备上的整个文件系统。如果仍然无法正常运行,则问题出在Android Studio
BogdanV。15年

@BogdanV。以用户或root身份登录时,找不到Android调试桥(ADB)。我尝试了“ adb设备”以及“ ./adb设备”,但未返回“没有此类文件或目录”。目前,我正在使用Android Studio调试Panasonic Toughpad,并且没有问题。
portsample

这很特别,因为adb是基本的Android SDK工具。也许您没有将android sdk平台工具目录添加到路径中。但是无论如何,如果您有解决方案,请使用该解决方案。
Bogdan V.

Answers:


182

我在将Linux计算机与运行Android 5.1的Nexus 4配合使用时遇到了这个问题

解决方法是同时启用“通过USB调试”和“作为MTP连接”。当在OSX上使用相同的设备以及Android Studio和adb时,情况恰恰相反-为了使Android Studio能够识别听筒,我需要禁用“作为MTP连接”。


我在使用两个不同设备的同一开发环境中遇到了类似的行为,因此,与我一样导致这篇文章的任何人都值得一提。如果使用MTP进行连接,则我有一个LG Realm仅在Android Studio中运行(在Linux Mint上运行),而使用PTP进行连接时,我只有一个LG Logos可以工作。因此,对于任何有问题的设备,可能都需要同时考虑这两种选择。的确很奇怪,我花了一个多小时才弄清楚这一点……
BMB 2016年

那很奇怪,但事实确实如此。不知道我是否必须安装设备。
杰米

1
在我的Pixel XL上,我必须选择“使用USB传输照片(PTP)”。
yohosuff

1
即使使用Android Studio(3.0.1),我也必须启用MTP。
ffonz

2
在Android 8上,可以在开发人员选项->网络->选择USB配置:MTP(媒体传输协议)下找到该选项。
Lucio Paiva


42

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


1
要清楚,您可以在设备上进行此更改。在我的OnePlus上,它位于“设置” >“开发人员选项” >“选择USB配置” >“ MTP(媒体传输协议)”
Don Smith,

1
这个答案对我有用。对于小米Mi A2设置->连接的设备-> USB->选择文件传输。
Saleh Enam Shohag,

1
这也对我有用。我将Ubuntu与Xiaomi Redmi注5配合使用。只需选择File Transfer而不是默认的“ Charging”模式。
rahmatns

27

从/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"

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


6
是的,如果您授予所有可以使用的用户权限,但是您的规则文件是根据以下想法设计的:您应该执行的操作是将用户帐户添加到plugdev组,注销,然后重新登录-在原始0664中为您提供了“组”6。–
克里斯·斯特拉顿

1
这个文件对我而言不存在,使用Elementary OS Freya
Mark O'Sullivan

我刚刚在Ubuntu 14.04上为华为设备创建了此文件。完美的作品!谢谢你的回答!!
BenRoob

在此之后,我不得不重新启动adb服务器才能adb shell开始工作
rrosa

4
为我工作,但首先必须创建文件,因为它不存在,然后将idVendor更改为lsusb中的文件(请参阅greg93答案)。这不应该是开始在linux上开发的一部分。
tonisives

27

Android 8

MTP不再可用。在我的Android 8上,“传输文件”选项无效。

“传输照片PTP”已工作,并且Studio显示了设备名称。

  • 手机上的步骤

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

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

Android 9

在Android 9中,使用选项File Transfer


12

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


1
适用于Android 4.4
Fedorov7890

7

简而言之,我在Prestigio PMP5570C平板电脑上遇到了同样的问题,

您要做的就是在平板电脑上确认要向计算机复制数据或从计算机复制数据(我忘记了),并添加@portsample编写的2行。

你可以找到idVendor设备的打字

lsusb

在UBUNTU 12.04中,您会得到:

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

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


7

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

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

在这里,我需要选择PTP,一切都会再次正常运行:

选择USB配置模式




5

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

在终端中运行这两个命令

 sudo adb kill-server
 sudo adb start-server

应该管用!


3

我为此错误编写了一个脚本。对我来说,它在Fedora 28中可以正常工作,但在许多Linux发行版中都应该可以工作。只需使用自展开脚本的内容创建一个文件。我称它为usbDebbugingAndroidStudio.sh
授予他执行权限:chmod +x usbDebbugingAndroidStudio.sh

并运行它: sudo ./usbDebbugingAndroidStudio.sh

之后,检查命令lsusb显示的列表并介绍设备的ID。例如:我的输出是:Bus 006 Device 002: ID 05c6:9091 Qualcomm, Inc. 所以我键入05c6并按Enter。

剧本:

#!/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.

1

什么F ...!:)注意:我已经在One + 5t的android 8.1上看到了...

即使我们做以上所有事情,除了进入开发选项菜单(usb调试)(除了重置“取消授权”或类似的东西(我在法文版;))

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

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

如果您不使用,请在连接USB电缆时(如果您一直不接受,但如果是第一次,则此框将出现在您的设备上)在您的android设备上获得自动保护功能它,即使所有权限都很好,ADB设备也会显示未经授权的情况(666,UDEV等)

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


0

对于我(可能还有许多其他人)而言,问题在于对计算机上设备的访问权限。现在,这已经在android文档中得到了很好的记录,我认为最好的解决方案在这里

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


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

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

$sudo /your_android_studio_path/bin/studio.sh

0

在我的情况下:

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

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


0

如果接受的答案对您不起作用,则只需执行以下简单步骤:只需打开android studio终端即可:-

亚行杀害服务器

亚行启动服务器

它为我工作。


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.