【问题标题】:Insufficient permissions for device in Android Studio Workspace running in openSUSE 13.2在 openSUSE 13.2 中运行的 Android Studio Workspace 中的设备权限不足
【发布时间】: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,希望可能有其他选择;有吗?

更新:我能够通过

进入并访问 ADB
uvachem-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平台工具目录添加到路径中。但无论如何,如果您有解决方案,请使用它。

标签: android android-studio opensuse cyanogenmod


【解决方案1】:

从 /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 的方式解决此问题。

【讨论】:

  • 是的,如果您向所有可以工作的用户授予权限,但您的规则文件是基于您应该做的是将您的用户帐户添加到 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-serversudo 部分很重要。
    • 它显示连接的设备列表 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 的系统上,如果给定列表中不存在您的供应商,您可以运行 lsusbdmesg 来获取供应商 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 显示设备名称。

            • 手机上的步骤

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

              1. 在控制台上运行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", 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.
                

                【讨论】:

                  【解决方案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 端口并且它的工作:),

                              如果有人遇到同样的问题,我会写这篇文章,然后他们可以得到帮助。

                              【讨论】:

                                猜你喜欢
                                • 1970-01-01
                                • 2015-06-19
                                • 1970-01-01
                                • 1970-01-01
                                • 2023-03-29
                                • 2014-06-16
                                • 1970-01-01
                                • 2019-09-11
                                • 1970-01-01
                                相关资源
                                最近更新 更多