破解Android设备无法联调的谜题
这篇文章要感谢来自知乎的小伙伴:子非鱼,他最近被一件事情困惑,那就是:Android手机无法联调了。在解决完他的疑问后,突然意识到,其实自己在前一段时间也曾遇到同样的问题,最后居然还怀疑是电脑和手机不兼容导致的。然而,罪魁祸首居然是数据线。
好了,下面我们来看一下具体情况吧。
我们都在使用苹果公司的Mac OS,手机都是小米。子非鱼同学使用的是红米Note3,我使用的是小米9SE。现象一样,都是插上电脑后无法联调,使用
adb devices
命令,显示无设备连接,但此时,手机显示是正在充电的。
下图借用子非鱼同学的命令行截图说明:
我们二人一开始的解决思路都是怀疑是不是电脑配置有问题。据子非鱼的描述,他进行了两次尝试:
- 删除25.X版本adb,下载29.x版本adb;
- 进程里kill adb进程和所有5037端口。
均不奏效。
我当初的做法则是打开模拟器试试,结果似乎adb很正常,于是更加迷茫,不知道哪里出了问题。
某天下班回家,发现一直在用的数据线不知道哪里去了,于是换了一根,结果居然可以连上了。得到结论,原来是数据线惹的祸。
接下来问题就来了:一条小小的数据线,既然可以充电,为什么做不了数据交换呢?
经过搜索才发现,原来还有“数据线”和“充电线”之分,区别主要在以下三各方面:
- 数据线在USB接口那跟线里有四条线,而电源线在USB那个线里有两条线;
- 充电线用到时电源的VCC和GND这两个线,而数据线是用到VCC,GND,和两个通信线;
- 充电线只能拿来给手机充电,数据线除了能给移动设备充电外,还能用来于手机与电脑之间的数据传输,也就是说,数据线可以当充电线用,但充电线不一定能当数据线用。
此外,考虑到使用方便,很多人可能都购买过多合一的线材,比如下图这种:
为了获得稳定的连接,建议读者不要采用这类线材进行联调。当然,用来和充电宝搭配使用还是不错的。
好了,正文内容到此为止。希望读者在遇到类似问题的时候多个心眼,不要忽视一根小小的数据线,它可能也会把你搞到头大。
破解Android设备无法联调的谜题的更多相关文章
- chorme浏览器调试Android设备
Android设备开启开发者模式,并打开USB调试: 接着在Android设备上运行项目 在chrome浏览器打开F12: 在Remote devices里即可调试页面. ! 一般需要FQ
- 无线连接Android设备
有时设备处于低电,此时又需要进行设备与PC的数据传输,但是通过USB连接充电速度太慢.这时就可以通过无线进行传输数据,然后通过AC充电.一举两得. 前提: 1.在Android设备的开发者模式-打开U ...
- 制作bat脚本,抓取Android设备logcat
::bat制作抓取Android设备的logcat,并保存以时间命名的txt文件至设备目录 1 @ECHO off adb wait-for-device ECHO 正在连接设备 adb logcat ...
- 电脑控制Android设备的软件——Total Control
最早开始搞Android开发时,为了调试方便,想找一个Android下的远程控制软件,支持在电脑端远程控制和同步显示Android设备.先后试了360手机助手.Mobizen.Vysor和Mirror ...
- python Windows下的android设备截图工具
目录 界面版 命令行版 界面版 利用python的wx库写个ui界面,用来把android设备的截图输出到电脑屏幕,前提需要安装adb,涉及到的python库也要安装.代码如下: #!/usr/bin ...
- Python写一个Windows下的android设备截图工具
界面版 利用python的wx库写个ui界面,用来把android设备的截图输出到电脑屏幕,前提需要安装adb,涉及到的python库也要安装.代码如下: import wx,subprocess,o ...
- 非root Android设备上Tcpdump的实现
通常我们在Android应用中执行某个命令时会使用"Runtime.getRuntime().exec("命令路径")"这种方式,但是当我们执行抓包操作时,使用 ...
- 正确获得android设备的IP地址
网上此类获得android设备IP地址相关的文章有不少,有一篇是比较通用的,但有一个问题:有些设备默认的是IPv6的地址,那段代码获得的就是IPv6的地址.但这显然不是我们想要的,我们需要的是IPv4 ...
- 可显示Android设备选择列表,并进入指定Android设备Console的Shell脚本
如果PC上连接多部Android设备(包括Android模拟器),在进入Console时还需要使用adb -s deviceid shell.比较麻烦,本文为此编写了一个Shell脚本文件(需要在Li ...
随机推荐
- airflow的安装
1.环境准备1.1 安装环境1.2 创建用户2.安装airflow2.1 安装python2.2 安装pip2.3 安装数据库2.4 安装airflow2.4.1 安装主模块2.4.2 安装数据库模块 ...
- 利用Code::Blocks搭建64位C++开发平台
0.前言 随着64位计算机的普及,编写64位程序成为程序员基本的要求.我在<体验Code::Blocks下的C++编程>中描述了利用Code::Blocks官方提供的封装了编译器的安装包( ...
- Java 基础篇之反射
反射 使用反射获取程序运行时的对象和类的真实信息. 获取 Class 对象 每个类被加载之后,系统会为该类生成一个对应的 Class 对象,通过该 Class 对象可以访问到 JVM 中的这个类. 使 ...
- Java基础学习笔记(四) - 认识final关键字、权限修饰符和内部类
一.final关键字 为什么要使用 final 关键字? 通过继承我们知道,子类可以重写父类的成员变量和方法.final 关键字可以用于修饰父类,父类成员变量和方法,使其内容不可以被更改. 1.被修饰 ...
- Openshift 部署第一个应用hello-openshift
Openshift 部署第一个应用hello-openshift: cd /opt/ wget https://github.com/openshift/origin/releases/downloa ...
- Springboot之初入江湖
Hello,各位小伙伴大家好,我是小栈君. 今天的分享主题是关于Springboot主题分享,其实在写这个系列主题之前有想过一些关于分享技术的顺序问题,因为我在创建"IT干货栈"这 ...
- Java9以后的垃圾回收
1: finalize() 方法 finallize() 方法是Object类的方法, 用于在类被GC回收时 做一些处理操作, 但是JVM并不能保证finalize(0 ) 方法一定被执行, 由于fi ...
- 利用js种的正则删除html标签
public static string NoHTML(string Htmlstring) { //删除脚本 Htmlstring = Regex.Replace(Htmlstring, @&quo ...
- 非后端开发Mysql日常使用小结
数据库的五个概念 数据库服务器 数据库 数据表 数据字段 数据行 那么这里下面既是对上面几个概念进行基本的日常操作. 数据库引擎使用 这里仅仅只介绍常用的两种引擎,而InnoDB是从MySQL 5.6 ...
- 利用npm安装/删除/查看包信息
查看远程服务器上的包的版本信息 npm view webpack version //查看npm服务器上包webpack的最新版本 npm view webpack versions //查看服务器上 ...