在ubuntu下真机调试android程序出现设备没有访问权限

    今天把android的开发环境从windows平台切换到了ubuntu上。

java jdk android-adt android-ndk都下好,环境变量都配好之后,

在调试程序的时候,出现设备没有权限访问,在shell中输入adb devices

  出现 ?????    no permittion

一看这个,就蒙了。在网上谷歌百度了半天,

出现的答案,感觉大家都是copy过来的,不了解如何真正的去解决这个

问题,也许这些解决方法在某些情况下,有效,而我拿过来,在我这里

完全没有用。

没办法了,还是自己边查资料,边研究,到底怎么回事。

后来知道,这个是设备访问权限的问题。

知道了3种解决方法:

第一种:通过udev的rules文件来改变设备访问权限

在linux下,设备是以文件的形式出现的,对设备的访问,也就是对文件的访问。

linux内核加载的设备,会把设备的信息,放到用户空间sysfs。也就是在/sys中。

以供用户查询设备的信息。假如用户需要修改设备的一些属性,或者在系统加载

和移除设备的时候进行一下操作以及其他一些需求时,应该怎么办呢??

在linux内核版本2.6以后,使用udev来进行设备管理,之前是使用devfs。

udev提供了配置文件/etc/udev/udev.conf和规则文件在/etc/udev/rules.d下面的.rules文件

系统默认的一些规则文件在/lib/udev/rules.d下面。

我们可以通过编写规则文件来改变系统创建设备文件的规则

这里我们需要改变创建设备文件的访问权限。

.rules中的每一行都是一条规则

一条规则有key-values对构成。

键值对又分为匹配键值对和赋值键值对

一条规则至少包含一个匹配键值对和一个赋值键值对

通过匹配键值对去匹配设备,然后在对这个设备执行赋值键值对。

我的规则如下:

SUBSYSTEM=="usb",ATTR{devpath}=="1.1.1",ATTR{idVendor}=="0bb4",ATTR{idProduct}=="0cf0",MODE="0777",SYMLINK+="LZL_HTC"

SUBSYSTEM=="usb",ATTR{devpath}=="1.1.1",ATTR{idVendor}=="0bb4",ATTR{idProduct}=="0cf0"这一部分属于匹配键值对

MODE="0777"这里是赋值键值对,在修改设备的访问权限


在写匹配键值对的时候

可以通过udevadm info -a -n /dev/设备文件名

来查讯设备的信息。

如下所示:

KERNEL=="2-1.1.1"
SUBSYSTEM=="usb"
DRIVER=="usb"
ATTR{bDeviceSubClass}=="00"
ATTR{bDeviceProtocol}=="00"
ATTR{devpath}=="1.1.1"
ATTR{idVendor}=="0bb4"
ATTR{speed}=="480"
ATTR{bNumInterfaces}==" 2"
ATTR{bConfigurationValue}=="1"
ATTR{bMaxPacketSize0}=="64"
ATTR{busnum}=="2"
ATTR{devnum}=="10"

规则文件的命名要注意了

udev会通过文件名的assii码的升序来遍历规则文件

然后匹配上的规则文件都会生效。

所以会发生覆盖的现象。

所以假如要自己的规则生效一定要在后面执行规则。

添加了规则文件后,可以通过sudo udevadm trigger

人工触发udev,使规则文件生效。

udev 的知识可以参考:https://wiki.archlinux.org/index.php/Udev#Installation

第二种:用root用户去调试android程序或者用root用户去启动adb服务。

如:

sudo ./adb kill-server

sudo ./adb devices

第三种:手动修改设备文件的访问权限

我们知道linux会在/dev下面产生相应设备的设备文件

在这里找到相应的设备文件,通过chmod来修改访问权限就好了。

转载于:https://www.cnblogs.com/lzl-sml/p/3664576.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值