在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 ...
随机推荐
- hibernate.properties
hibernate.dialect=org.hibernate.dialect.MySQL5Dialect #hibernate.dialect=org.hibernate.dialect.Oracl ...
- dubbo源码之二——dubbo入口
dubbo源码版本:2.5.4 dubbo-contaner-api com.alibaba.dubbo.container dubbo-demo-consumer com.alibaba.dubbo ...
- word2007如何进行批注
在正常的办公或者学校撰写论文,请别人进行提出修改意见是不可避免的,在word2007中提供了批注修改模式,十分方便,给撰写文档和批阅文档的人带来了极大的方便.本节介绍如何在word2007中进行批注及 ...
- Linux Shell脚本面试25问
Q:1 Shell脚本是什么.它是必需的吗? 答:一个Shell脚本是一个文本文件,包含一个或多个命令.作为系统管理员,我们经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令在一个文本文件( ...
- BZOJ 1513 [POI2006]Tet-Tetris 3D
题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1513 题意:三维空间,有一些立方体在垂直下落.立方体的左下角坐标(x,y)以及长宽 ...
- BZOJ 1413 取石子游戏(DP)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1413 题意:n堆石子排成一排.每次只能在两侧的两堆中选择一堆拿.至少拿一个.谁不能操作谁 ...
- Java自制人机小游戏——————————剪刀、石头、布
package com.hello.test; import java.util.Scanner; public class TestGame { public static void main(St ...
- 用sql的select语句从数据库中获取数据
基本的select语句 select语句中的算数表达式和NULL值 列的别名 使用连接符操作,literal character strings,alternative quote operator, ...
- Codeforces Beta Round #91 (Div. 1 Only) E. Lucky Array 分块
E. Lucky Array time limit per test 4 seconds memory limit per test 256 megabytes input standard inpu ...
- npm 打包 electron app 报错问题
在进行desktop打包过程中,遇到如下报错: 0 info it worked if it ends with ok 1 verbose cli [ 'C:\\Program Files\\node ...