在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来修改访问权限就好了。
在ubuntu下真机调试android程序出现设备没有访问权限的更多相关文章
- mac 下真机调试 android 手机
第一步: 查看usb设备信息 在 终端输入:system_profiler SPUSBDataType 可以查看连接的usb设备的信息 比如我的usb信息如下(部分内容): Spreadtru ...
- ionic真机调试Android报错 - could not read ok from ADB Server * failed to start daemon * error: cannot connect to daemon
在使用真机调试Android程序时,报错如下: could not read ok from ADB Server * failed to start daemon error: cannot con ...
- 【ionic】Mac IOS下真机调试
模拟调试不能保证真机一定没问题,所以真机调试是非常必要的一步 IOS设备 启用设备调试 在IOS设备中(Iphone,Ipad)中开始web检测器 设备->safari->高级->w ...
- iPhone 真机调试应用程序
原文:http://blog.sina.com.cn/s/blog_68e753f70100r3w5.html 真机调试iphone应用程序 1.真机调试流程概述 1) 真机调试应用程序, ...
- 使用未付费的账号真机调试 iOS 程序,过几天后程序一打开就会闪退
使用未付费的苹果开发者账号真机调试 iOS 程序,过几天后程序一打开就会闪退. 解决办法: 删除 Provisioning Profile,重新配置一次. 终极解决办法:花钱购买苹果开发者账号. ...
- xcode7.1.1不能真机调试ios9.2系统设备的解决方法
转载自:http://www.cocoachina.com/bbs/read.php?tid-331335.html 前些天手机升级到iOS9.2版本号 xcode7.1还能真机測试. 昨晚更新xc ...
- eclipse下使用Genymotion调试Android程序出现的问题
一. The connection to adb is down, and a severe error has occured. You must restart adb and Eclipse. ...
- 移动设备真机调试本地程序的Node.js【无需连wifi】
前提: 在某些场景下,我们需要调试我们的Node.js,这很简单,很多编辑器都集成了debug模式,但是某些场景下,我们想在移动设备上运行,在本地debug,这也行,只需要链接在同一个内网,通过ip ...
- Android真机调试 Android.Util.AndroidRuntimeException: You cannot combine custom titles with other title features
参考连接:http://blog.csdn.net/scyatcs/article/details/9003285 Android.Util.AndroidRuntimeException: You ...
随机推荐
- shell中awk用法
简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再 ...
- 【leetcode❤python】Convert a Number to Hexadecimal
#-*- coding: UTF-8 -*- class Solution(object): hexDic={0:'0',1:'1',2:'2',3:'3',4:'4',5:'5',6:'6', ...
- UVA 1366 九 Martian Mining
Martian Mining Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submit Sta ...
- Android Studio中有用的快捷键栏
Android Studio中有用的快捷键栏#1 Ahraewi线移动 Alt + Shift +向上/向下❖Alt + Shift +向上/向下 或上下移动在所选位置的行. 删除行 CMD + B ...
- Bson
https://en.wikipedia.org/wiki/BSON BSON /ˈbiːsɒn/ is a computer data interchange format used mainly ...
- [SAP ABAP开发技术总结]权限对象检查
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- CUBRID学习笔记 22 插入数据
CREATE TABLE auto_tbl(id INT AUTO_INCREMENT, name VARCHAR); 自增长的列可以插入null, 同时一次可以插入多条记录.别的和其他的sql数据库 ...
- 不要温柔地走入AMD
1.无依赖情况 <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...
- Hibernate4集成 Annotation使用教程
Spring4 MVC Hibernate4集成 Annotation 一. 本文所用环境 Spring4.0.3.RELEASE.Hibernate4.3.5.Final.Mysql 二. ...
- Java中ArrayList相关的5道面试题
本文参考了 <关于ArrayList的5道面试题 > 1.ArrayList的大小是如何自动增加的? 这个问题我想曾经debug过并且查看过arraylist源码的人都有印象,它的过程是: ...