Ubuntu 下 adb 连接手机调试android程序失败 终极解决方法


Ubuntu 下 adb 连接手机调试

      今code完毕,发现手机连接突然出现问题,logcat无输出,adb devices后发现手机连接有问题。

      手机连接状态:手机端,android系统,已打开debug模式,并且状态栏显示“已连接USB”调试;

                                   电脑端,Ubuntu系统,adb devices,无连接信息

      首先想到Window上很多adb连接错误是应为端口被占问题,所以查看端口情况:

      

changxing@changxing-ThinkPad-T410:~/Client$ ps -aux | grep adb
Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html
root      6978  0.0  0.0   4684   940 pts/0    T    20:25   0:00 adb logcat -v process
root      6979  0.0  0.0  31316  1372 pts/0    Tl   20:25   0:00 adb -P 5037 fork-server server
root      7052  0.0  0.0   4548   952 pts/0    T    20:26   0:00 adb tcpip
root      7063  0.0  0.0   4548   952 pts/0    T    20:27   0:00 adb get-state
1000      7337  0.0  0.0  13612   940 pts/0    S+   20:33   0:00 grep adb

root      6978  0.0  0.0   4684   940 pts/0    T    20:25   0:00 adb logcat -v process

     ps命令解析:

 1)ps -a 显示现行终端机下的所有程序,包括其他用户的程序。

  2)ps -A 显示所有程序。

  3)ps -c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。

  4)ps -e 此参数的效果和指定"A"参数相同。

  5)ps -e 列出程序时,显示每个程序所使用的环境变量。

  6)ps -f 用ASCII字符显示树状结构,表达程序间的相互关系。

  7)ps -H 显示树状结构,表示程序间的相互关系。

  8)ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。

  9)ps -s 采用程序信号的格式显示程序状况。

  10)ps - S 列出程序时,包括已中断的子程序资料。

  11)ps -t<终端机编号>

  指定终端机编号,并列出属于该终端机的程序的状况。

  12)ps -u username

  以用户为主的格式来显示程序状况。

  13)ps x

  显示所有程序,不以终端机来区分。

  最常用的方法是ps -aux,然后再利用一个管道符号导向到grep去查找特定的进程,然后再对特定的进程进行操作。


      

# 查看哪些进程打开了指定端口port(对于守护进程必须以root用户执行才能查看到)
lsof -i:port

# 查看哪些进程打开了指定端口port,最后一列是进程ID(此方法对于守护进程作用不大)
netstat -nap|grep port

# 查看端口号对应的系统服务名称
cat /etc/services

# 启动|停止|重启系统服务
sudo /etc/init.d/service start|stop|restart 

        发现有多个logcat程序运行,所以杀掉指定进程。杀完重新连接手机,发现问题还是没有解决,重新分析google,发现MTP连接PC的相关文章:

(MTP相关知识:MTP的全称是Media Transfer Protocol(媒体传输协议),它是微软公司提出的一套媒体文件传输协议。Android3.0开始支持MTP

在Ubuntu挂载使用MTP设备步骤如下:

1.将MTP设备连接至PC机

2.如果是第一次使用MTP设备需要安装以下软件,否则可以跳过此步骤:

1 sudo apt-get install mtpfs libfuse-dev libmad0-dev

3.挂载MTP设备

1 sudo mtpfs -o allow_other /media/mtp
)


相关步骤:

sudo gedit  /etc/udev/rules.d/50-android.rules

SUBSYSTEM=="usb", ATTR{idVendor}=="1234", ATTR{idProduct}=="0010", MODE="4666", OWNER="alex"

1234和0010分别是VID和PID,OWNER填用户名。

二依次运行命令

adb kill-server

adb start-server

adb devices

三重新插入手机查看连接情况。

四还不行的话,编辑~/.android下的adb_usb.ini文件

idVendor加进去

如:

# ANDROID 3RD PARTY USB VENDOR ID LIST -- DO NOT EDIT.
# USE 'android update adb' TO GENERATE.
# 1 USB VENDOR ID PER LINE.
0x1234 


五真的还不行,就同时重启电脑和手机,这个时候我的手机已经和电脑连接正常,adb logcat 成功输出!


补充的有些手机权限问题,总是提示:

                                 error: insufficient permissions for device


解决方面(加权限):

shily@hh-desktop:~$cd ~/sdk/android-sdk_eng.sdk_linux-x86/tools
shily@hh-desktop:~/sdk/android-sdk_eng.sdk_linux-x86/tools$ ls -l adb
-rwxr-xr-x 1 shily shily  341694 2010-05-11 05:46 adb
shily@hh-desktop:~/sdk/android-sdk_eng.sdk_linux-x86/tools$ sudo chown root:root adb
[sudo] password for shily:
shily@hh-desktop:~/sdk/android-sdk_eng.sdk_linux-x86/tools$ ls -l adb
-rwxr-xr-x 1 root root   341694 2010-05-11 05:46 adb
shily@hh-desktop:~/sdk/android-sdk_eng.sdk_linux-x86/tools$ sudo chmod u+s adb
shily@hh-desktop:~/sdk/android-sdk_eng.sdk_linux-x86/tools$ ls -l adb
-rwsr-xr-x 1 root root   341694 2010-05-11 05:46 adb
shily@hh-desktop:~/sdk/android-sdk_eng.sdk_linux-x86/tools$ 
这样无论哪个用户启动adb 使用的都是root权限,就不会提示权限不足的错误了。



  







  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值