我有一个根据摩托罗拉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 ids。
我还尝试从设备上的开发人员选项中取消撤销USB调试权限,但没有运气。
我没有尝试以root身份运行ASW,希望可能有其他选项;在那里?
更新:我能够通过
进入并访问ADBuvachem-gsmith2:/home/greg/Android/Sdk/platform-tools # ./adb
然后我做了一个kill服务器,为root用户做了一个SU并重新启动了服务器。然后我尝试从Android Studio连接到设备。在设备上收到关于从PC接受RSA密钥的消息,说“是”,然后能够将应用程序部署到设备。回到我原来的问题,是否有另一种方法来访问此设备而无需以root用户身份登录?似乎电话文件系统上存在许可问题阻止了这一点...
更新#2 这里的核心问题是权限问题。即使以root身份运行ADB也允许访问 rooted Android设备,更好的解决方案是更改此设备的udev文件中的权限...将664重置为666,(请参阅下面的答案)。这允许PC访问设备上的文件系统。
答案 0 :(得分:144)
在使用运行Android 5.1的Nexus 4的Linux机器时我有这个。
修复方法是启用“通过USB调试”和“连接为MTP”。在OSX上使用相同的设备和Android Studio和adb时情况恰恰相反 - 为了让Android Studio识别手机,我需要禁用'connect as MTP'。
答案 1 :(得分:64)
我找到了一个对我有用的简单答案:
adb kill-server
sudo adb start-server
sudo adb devices
然后你会找到你的设备。希望这会有所帮助。
参考:http://itsfoss.com/fix-error-insufficient-permissions-device/
答案 2 :(得分:24)
从/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的方式解决此问题。
答案 3 :(得分:21)
很简单。 只需将USB模式更改为“文件传输”模式即可。
答案 4 :(得分:11)
MTP不再可用。在我的android 8上,“传输文件”选项无效。
“传输照片PTP”已工作,并且Studio显示了设备名称。
我的步骤
答案 5 :(得分:11)
在我的手机 Symphony W75 中, 在选项 USB计算机连接 - >选择连接媒体设备(MTP)已解决问题。
答案 6 :(得分:6)
长到短, 我对 Prestigio PMP5570C 平板电脑有同样的问题,
您只需在平板电脑上确认要将数据复制到计算机或从计算机复制数据(我忘了),并添加@portsample写的2行。
您可以找到设备输入的 idVendor
的lsusb
在UBUNTU 12.04中,然后你得到:
Bus 001 Device 011:ID 2207 :0010,
其中2207是您的供应商ID。 总结了问题和答案......
答案 7 :(得分:6)
我更新了以前连接正常的设备(Nvidia Shield),因此我知道PC设置已经正确。开发人员设置似乎在Android 7.0上有新的布局。
它位于设置>偏好>开发人员选项>网络>选择USB配置
在这里,我需要选择PTP,一切正常:
答案 8 :(得分:1)
什么F ...! :) 注意:我在Android 8.1上的One + 5t上看到了它。
即使我们已完成上述所有操作,除了进入开发选项菜单(usb调试)(除了重置“取消授权”或类似方法(我是法语版本;))
如果某些人遇到了与我相同的问题,也许对您也可能有用: 别忘了授权手机中的设备(如果您未始终选择框,则每次USB连接都会在Android设备上进行)。除此之外,您可以禁止手机上的旧授权设备,并以适当的参数开始以明确授权您的PC在Android设备上
当您连接android设备时,弹出窗口或通知要求授权mac地址或等效于该设备:如果要授权linux pc和android设备之间的连接,请授权它。
使用USB连接线时,有必要在Android设备上获得自动保护(如果您一直不接受,但如果是第一次,则此框将首次出现在设备上)不这样做,即使所有权限都很好(666,UDEV等),adb设备也会显示未经授权的情况
注意:谢谢您的宝贵帮助。 最后一件事,对不起我的英语
答案 9 :(得分:1)
USB debugging
transer file
答案 10 :(得分:0)
正如错误消息所说,这是一个许可不足的问题。根据我的经验,它只发生在我的Linux机器上,并且在MacOS和Windows上运行良好。使用root权限启动Android Studio可以避免此问题。
$sudo /your_android_studio_path/bin/studio.sh
答案 11 :(得分: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
如果您想要添加到系统范围的访问权限。
然后在bin
中创建该链接sudo ln -s /your_android_sdk_path/platform-tools/adb /bin/adb
如果你使用过adb设备或任何命令,那么首先杀死服务器,如
adb kill-server
然后启动服务器
adb start-server
adb devices
现在您可以看到您的设备已正确列出而没有问题
答案 12 :(得分:0)
对于我和可能的许多其他人来说,问题与机器上设备的访问权限有关。既然在android文档中有详细记载,我认为最好的解决方案是here
在基于Debian的系统上,如果您的供应商在给定列表中不存在,您可以运行lsusb
或dmesg
来获取供应商ID
答案 13 :(得分:0)
我为此错误编写了一个脚本。对我来说,它在Fedora 28中可以正常工作,但在许多Linux发行版中都应该可以工作。
只需使用自展开脚本的内容创建一个文件。我称它为usbDebbugingAndroidStudio.sh
通过以下方式授予他执行许可:for i=x
for j=y
if i+j-6==0
disp([i j]);
end
end
并运行它:chmod +x usbDebbugingAndroidStudio.sh
之后,检查命令lsusb显示的列表并引入Id的
你的设备。
例如:
我的输出是:sudo ./usbDebbugingAndroidStudio.sh
因此,我输入Bus 006 Device 002: ID 05c6:9091 Qualcomm, Inc.
并按Enter。
脚本:
05c6
答案 14 :(得分:0)
在我的情况下:
cd /etc/udev/rules.d/
sudo chmod a+r ./*.rules #the name of your rules files.
然后,我可以使用adb而不会出现此错误。
答案 15 :(得分:0)
如果接受的答案对您不起作用,则只需执行以下简单步骤: 只需打开您的android studio终端即可:-
adb kill-server
adb启动服务器
对我有用。
答案 16 :(得分:0)
此过程可以为我解决问题:
HttpClient client = new HttpClient();
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = new HttpResponseMessage();
client.DefaultRequestHeaders.Accept.Clear();
client.BaseAddress = new Uri(URL);
try { response = client.GetAsync(/api/user/1).Result; }
catch (Exception e)
{
Console.writeline(e);
}
答案 17 :(得分:0)
转到开发人员选项->默认USB配置并更改为PTP
在终端中运行这两个命令
sudo adb kill-server
sudo adb start-server
应该工作!
答案 18 :(得分:0)
我在从 android studio 4.1 运行 flutter 应用程序时遇到了这个问题,我确实移除了 USB 电缆并插入了第二个 USB 端口并使其正常工作:),
如果有人遇到同样的问题,我会写这篇文章,他们可以寻求帮助。
答案 19 :(得分:-1)
不运行Linux sudo apt-get安装adb。不要忘记启用USB调试。