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

109

我有一部已经获取了root权限的摩托罗拉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

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

我还尝试了在设备上从开发人员选项中撤销USB调试权限,但没有成功。

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

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

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

然后我执行了kill server,切换到root用户并重启了服务器。接着尝试从Android Studio连接设备,在设备上收到有关接受来自电脑的RSA密钥的消息,选择“是”,然后就能将应用部署到设备上了。所以回到我的最初的问题,有没有其他方法可以在不以root身份登录的情况下访问这个设备?似乎这个手机文件系统存在权限问题阻止了这个过程...

更新#2 核心问题在于权限设置。虽然以root身份运行ADB将允许访问经过root处理的Android设备,但更好的解决方案是更改udev文件中此设备的权限... 将664重置为666(请参见下面的答案)。这将允许计算机访问设备上的文件系统。


@BogdanV。是的,USB调试已启用。请详细说明您最后两句话中的建议。谢谢。 - portsample
打开终端并输入“adb devices”。如果您看到您的设备,则Android调试桥(adb)可以看到该设备。如果是这样,请键入“adb root”以使adb能够作为root发出adb shell命令。然后执行adb remount以访问设备上的整个文件系统。如果仍然无法正常工作,则问题可能出在Android Studio上。 - Bogdan V.
@BogdanV。无论是以用户身份还是以root身份登录,都找不到Android Debug Bridge (ADB)。我尝试了"adb devices"和"./adb devices",但都返回了"没有这个文件或目录"的错误。目前我正在使用Android Studio调试一个Panasonic Toughpad,并且没有遇到任何问题。 - portsample
这很奇怪,因为adb是基本的Android SDK工具。也许您没有将android sdk平台工具目录添加到路径中。但无论如何,如果您有解决方案,请使用它。 - Bogdan V.
Toughpad正在运行原始ROM,没有被识别的问题,而Defy+则安装了Cyanogenmod自定义ROM,无法被Eclipse与ADT插件或Android Studio识别。 - portsample
显示剩余9条评论
22个回答

215
我在使用运行Android 5.1的Nexus 4时,在Linux机器上遇到了这个问题。
解决方法是同时启用“通过USB进行调试”和“连接为MTP”。但是,当使用相同的设备和Mac上的Android Studio和adb时,则相反 - 为了让Android Studio识别手机,我需要禁用“连接为MTP”。

1
我在同一开发环境中使用两个不同的设备遇到了类似的问题,并认为值得向任何看到这篇文章的人提及。我有一个 LG Realm,只有在使用 MTP 连接时才能在 Android Studio(运行在 Linux Mint 上)中工作,而 LG Logos 只有在使用 PTP 连接时才能正常工作。因此,对于任何有问题的设备,尝试调整这两个选项可能是值得的。真是奇怪,我花了一个多小时才弄清楚这个问题... - BMB
这很奇怪,但事实就是如此。我不确定是否需要挂载设备。 - jamie
2
在我的Pixel XL上,我必须选择“使用USB传输照片(PTP)”。 - yohosuff
1
即使使用 Android Studio(3.0.1),我仍然需要启用MTP。 - ffonz
2
在Android 8上,此选项可在“开发人员选项->网络->选择USB配置:MTP(媒体传输协议)”下找到。 - Lucio Paiva
显示剩余2条评论

107

8
记录一下,sudo adb start-server 中的 sudo 部分很重要。 - qed
1
显示如下: 已连接设备列表 模拟器-5600 离线 HNB1WC81 未授权 - Saravanan Nandhan
在小米Note 3上运行良好。 - Prem Singh Bist

87

很简单。只需将您的USB模式更改为文件传输模式,然后它就可以正常工作。


3
要明确,您需要在设备上进行此更改。在我的OnePlus手机上,它位于“设置”>“开发者选项”>“选择USB配置”>“MTP(媒体传输协议)”。 - Don Smith
1
这个答案对我有用。对于小米Mi A2,设置->连接设备->USB->选择文件传输。 - Saleh Enam Shohag
1
这对我也起作用了。我正在使用小米红米Note 5的Ubuntu系统。只需选择“文件传输”而不是默认的“充电”模式即可。 - Rahmat Nazali Salimi
1
适用于Ubuntu,Flutter。 - Eray Erdin
1
Ubuntu 22.04,运行得非常顺畅。 - Danny Sofftie

39

安卓 8

MTP 不再可用。 在我的安卓 8 上,“传输文件”选项无法运作。

“传输照片 PTP” 可以使用,而 Studio 显示了设备名称。

  • 您的手机操作步骤

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

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

安卓 9

使用安卓 9 时,请使用 文件传输 选项。


29

将此行中的权限从/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的方式解决此问题。


6
是的,如果您授予所有用户权限,那么这将起作用,但是您的规则文件是基于以下思想设计的:您应该将您的用户帐户添加到plugdev组中,注销,然后重新登录 - 这将为您提供原始0664中的“组”6。 - Chris Stratton
1
这个文件对我来说不存在,我正在使用Elementary OS Freya。 - Mark O'Sullivan
我刚在Ubuntu 14.04上为华为设备创建了这个文件。完美运行!感谢这个答案!! - BenRoob
我在此之后不得不重新启动ADB服务器才能使adb shell正常工作。 - rrosa
5
对我有用,但首先我需要创建文件,因为它不存在,然后将 idVendor 更改为 lsusb 中的值(请参见 greg93 的答案)。这不应该是在 Linux 上开始开发的一部分。 - tonisives
显示剩余3条评论

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

1
适用于Android 4.4。 - Fedorov7890

10
  • 打开USB调试
  • 使用USB传输文件

这对我来说是最好的答案。我对使用其他答案中提到的 sudo 感到担忧。 - Peter Chaula

8
长话短说,我曾经遇到了与Prestigio PMP5570C平板电脑相同的问题。您需要在平板电脑上确认您想要复制数据到/从您的计算机(这是我忘记的),并添加@portsample编写的两行代码。您可以在Ubuntu 12.04中键入lsusb来查找设备的idVendor,然后您会得到:Bus 001 Device 011:ID 2207:0010,其中2207是您的供应商ID。简而言之,问题和答案如下...

8
我更新了之前连接正常的设备(Nvidia Shield),所以我知道PC的设置已经正确。开发者选项在Android 7.0上似乎有一个新的布局。
它位于“设置”>“偏好设置”>“开发人员选项”>“网络”>“选择USB配置”。
在这里,我需要选择PTP,一切都可以正常工作:

Selecting USB configuration mode


7
这个过程解决了我的问题:
- On the Android device, drag the top menu and select "USB for file transfer"
- Press "Run" again

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接