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

por*_*ple 59 android opensuse cyanogenmod android-studio

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

????????????[null]
Run Code Online (Sandbox Code Playgroud)

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

insufficient permissions for device
Run Code Online (Sandbox Code Playgroud)

我真的想用这个设备和ROM进行调试.

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

Bus 002 Device 002: ID 22b8:431d Motorola PCS
Run Code Online (Sandbox Code Playgroud)

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

我也尝试过从设备上的开发者选项中获取Revoke USB调试权限,但没有运气.

我没有尝试以root身份运行ASW,希望可能有另一种选择; 在那儿?

更新:我能够进入并访问ADB

uvachem-gsmith2:/home/greg/Android/Sdk/platform-tools # ./adb
Run Code Online (Sandbox Code Playgroud)

然后我做了一个kill服务器,为root用户做了一个SU并重新启动了服务器.然后我尝试从Android Studio连接到设备.在设备上收到关于从PC接受RSA密钥的消息,说"是",然后能够将应用程序部署到设备.回到我原来的问题,是否有另一种方法来访问此设备而无需以root用户身份登录?似乎电话文件系统上存在一个权限问题阻止了这个...

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

cro*_*cro 155

在使用运行Android 5.1的Nexus 4的Linux机器时,我有这个

解决方案是启用"通过USB调试"和"连接为MTP".在OSX上使用相同的设备和Android Studio和adb时则相反 - 允许Android Studio识别手机,我需要禁用'connect as MTP'.

  • 在我的 Pixel XL 上,我必须选择“使用 USB 传输照片 (PTP)”。 (2认同)
  • 在 Android 8 上,可以在 _Developer options -> Networking -> Select USB Configuration: MTP (Media Transfer Protocol)_下找到此选项。 (2认同)

小智 70

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

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

然后你会找到你的设备.希望这可以帮助.

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

  • 为了记录,`sudo adb start-server`的`sudo`部分很重要. (6认同)

Sar*_*hal 29

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

  • 需要明确的是,您在设备上进行了此更改。在我的 OnePlus 上,它位于 *Settings* > *Developer Options* > *Select USB Configuration* > *MTP(媒体传输协议)* (2认同)

por*_*ple 24

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

#Motorola 
SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", MODE="0664", GROUP="plugdev"
Run Code Online (Sandbox Code Playgroud)

至,

#Motorola 
SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", MODE="0666", GROUP="plugdev"
Run Code Online (Sandbox Code Playgroud)

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

  • 是的,如果您为所有可行的用户授予权限,但您的规则文件的设计基于您应该做的是将您的用户帐户添加到plugdev组,注销,然后重新登录 - 为您提供原始0664中的"组"6. (5认同)
  • 为我工作,但首先必须创建该文件,因为它不存在,然后将idVendor更改为lsusb中的内容(请参阅greg93答案).这不应该是开始在linux上开发的一部分. (4认同)

kel*_*aka 16

MTP已不再可用.在我的Android 8"传输文件"选项不起作用.

"传输照片PTP"工作,Studio显示设备名称.

我的步骤

  1. 打开开发人员选项.
  2. 启用USB调试.
  3. sudo usermod -aG plugdev $ LOGNAME
  4. 将USB连接更改为PTP


小智 12

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


Hab*_*bib 7

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

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

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

选择USB配置模式


gre*_*g93 6

长短,我对Prestigio PMP5570C平板电脑有同样的问题,

您所要做的就是在平板电脑上确认要将数据复制到计算机中(我忘记了什么),并添加@portsample写的2行.

您可以找到设备输入的idVendor

的lsusb

在UBUNTU 12.04,你会得到:

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

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


小智 6

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

- On the Android device, drag the top menu and select "USB for file transfer"
- Press "Run" again
Run Code Online (Sandbox Code Playgroud)


May*_*ish 5

  • 使能够 USB debugging
  • 使用 USB 来 transer file


Aak*_*ash 5

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

在终端中运行这两个命令

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

应该管用!