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(媒体传输协议),它是微软公司提出的一套媒体文件传输协议。Android从3.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 成功输出!
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。