• 在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来修改访问权限就好了。

  • 相关阅读:
    个人管理:提高你的搜商
    敏捷个人:提供更多文档下载,并转载一篇敏捷个人读书笔记
    个人管理: 激励你的一句话
    敏捷个人 从Scrum实践来思考如何导入价值观
    信息系统开发平台OpenExpressApp 如何解决ComboBox.TextProperty绑定带来问题的来龙去脉
    敏捷个人 敏捷个人价值观,欢迎提出你的意见和你的价值观
    使用VS2010的CodedUI来做自己的自动化测试框架
    .Net4下的MEF(Managed Extensibility Framework) 架构简介
    IronRuby - 快速在半小时学习Ruby基础知识
    敏捷个人 项目网站文档页签增加blog链接
  • 原文地址:https://www.cnblogs.com/lzl-sml/p/3664576.html
Copyright © 2020-2023  润新知