我正在使用三星galaxy nexus手机(Android 4.0平台).
我正在开发Ubuntu Linux操作系统上的Android应用程序.我想直接在三星手机设备上运行我的应用程序,所以我执行了以下设置步骤:
在我的项目AndroidManifest.xml文件中,添加android:debuggable="true"到<application>元素中
在设备上,在" 设置">"安全性"中启用" 未知来源"
在设备上,在设置>开发人员选项中启用USB调试
在我的计算机上,/etc/udev/rules.d/51-android.rules使用以下内容创建了该文件:
SUBSYSTEM=="usb", ATTR{idVendor}=="04E8", MODE="0666", GROUP="plugdev"
Run Code Online (Sandbox Code Playgroud)在我的计算机上,运行该chmod a+r /etc/udev/rules.d/51-android.rules命令
然后,在我的计算机上,我打开了一个终端并执行了adb devices命令,我得到了:
List of devices attached
???????????? no permissions
Run Code Online (Sandbox Code Playgroud)
由于我没有看到我的设备,只能???????????? no permissions运行以下命令:
adb kill-server
adb start-server
adb devices
Run Code Online (Sandbox Code Playgroud)
但我仍然得到:
List of devices attached
???????????? no permissions
Run Code Online (Sandbox Code Playgroud)
为什么?我错过了什么?
我有一个根源的摩托罗拉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访问设备上的文件系统.