A. android手机与pc通讯
Android手机和PC通信,即USB的通信支持有两种模式:
HOST模式:Android设备为USB总线和外设供电,数据传输是双向的。
Accessory模式:即附件模式,Android作为附件,手机和电脑连接,通常是这种模式,由USB Device端向总线供电,数据传输方向是双向的。这就是为什么手机插到电脑上可以充电的原因。
在讨论具体代码之前,需要先讲一下再host模式下面的调试办法,因为数据线的端口被外设使用了,那么,传统的连接数据线调试的方法已经不行了。官网给出了解决办法:
1、请把Android设备用数据线连接到电脑,当然,也要把Android设备的wifi打开。
2、在windows命令行下,进入SDKplatform-tools/目录(具体看SDK安装在哪个目录了),执行adb tcpip 5555回车。这里其实是打开了adb调试的无线端口(Android设备在电脑上的端口映射),其实后面的数字可以随便来,只要端口没有被占用。
3、adb connect <device-ip-address>:5555键入回车,这里的device-ip-address是Android端的IP地址。
4、最后adb usb回车,假如没有问题,现在已经可以在eclipse上看到logcat的输出了。
其实还有个简单的办法,可以在应用商店上下一个无线ADB工具,随便哪个都可以,这类工具就是在Android端做了上面的那些工作,而且还不用连数据线,但是第三步的那个操作还是要在windows的命令行窗口手动输入的。
B. 如何用adb连接android手机
方法一:::手机打开开发者模式 勾选usb调试 在你开发工具的ddms下 就有连上你手机了 或者下载豌豆荚这种,会自动链接电脑 再打开ddms就有adb
fang2
adb是什么呢? 我就不多说了, 对于搞Android开发的人来说, 一定不陌生。 本文讲述如何用adb来连接手机。
利用adb来连接手机, 有两种方式: 1, wifi, 2, usb.
前提条件: 下载adb, 最好把对应的文件置于cmd.exe同目录下。
1. 通过wifi, 利用adb来连接手机。
在pc的cmd中输入命令:
adb connect 192.168.1.100
其中adb就是手机的ip. 如果连接成功, 就可以进入android的shell了。
我自己在操作过程中, pc能ping通过手机, 但是adb连接手机, 出现了一点点问题, 提示unable to connect to 192.168.1.100:5555, 这个是什么原因呢? 原来手机的默认adb服务是没有打开的, 否则, 别人adb能随便连, 那岂不是很不安全么? 所以, 我们要想办法把手机上的adb服务打开。 怎么搞呢? 首先要在手机上下载一个android模拟器(当然, 如果你有, 就不用下载了), 然后切到root权限, 并执行如下命令打开adb服务:
su
setprop service.adb.tcp.port 5555
stop adbd
start adbd
然后adb就可以连接手机了, 如图:
2. 通过usb, 利用adb来连接手机。
我把手机通过usb接上pc, 结果adb并没有连接上手机, 于是下载了android驱动程序, 安装了, 就好了。这样, adb就连接上了手机, 开心啊。于是就可以利用adb shell进入手机的android系统了。 附上图, 纪念一下:
比较一下: 方法1的要求较高, 需要依赖于稳定的网络, 而且操作麻烦, 方法2就简便多了。
一旦adb登录后, 就可以切换到root下, 不要密码啊, 我进入shell后, 执行reboot, 结果手机机关机了。 好吧, 我承认, 我是有激动了。
C. linux驱动与设备节点简介 & Android内核与Linux内核的区别
驱动是内核的一部分,作为直接访问物理硬件的一个软件层,用于应用程序与物理硬件设备通信。内核包含多种驱动,如WIFI、USB、Audio、蓝牙、相机、显示驱动。
(1)设备驱动程序三类:字符设备驱动程序、块设备驱动程序、网络设备驱动程序;
(2)对应Linux三类设备:字符设备、块设备、网络设备;
(3)常见字符设备:鼠标、键盘、串口、控制台等;
(4)常见块设备:各种硬盘、flash磁盘、RAM磁盘等;
(5)网络设备(网络接口):eth0、eth1,注:网络设备没有设备节点,应用程序通过Socket访问网络设备。由于网络设备面向报文,较难实现相关read、write等文件读写函数,所以驱动的实现也与字符设备和块设备不同。
Linux使用对文件一样的管理方式来管理设备,所有设备都以文件的形式存放在/dev目录下,系统中的每个字符设备或者块设备都必须为其创建一个设备文件,它包含了该设备的设备类型(块设备或字符设备)、设备号(主设备号和次设备号)以及设备访问控制属性等。设备节点通过 mknod 命令创建,也可以由Udev用户工具软件在系统启动后根据/sys目录下每个设备的实际信息创建,使用后一种方式可以为每个设备动态分配设备号。
Linux中设备节点通过“mknod”命令创建,创建时需要指定主设备号和次设备号,即指定对应的驱动程序和对应的物理设备(访问设备节点时就相当于通过其设备号访问驱动程序进而间接访问到物理设备)。主设备号用来区分不同种类的设备,而次设备号用来区分同一类型的多个设备。对于常用设备,Linux有约定俗成的编号,如硬盘的主设备号是3
理解:应用程序通过访问设备节点读取主设备号和次设备号,通过主设备号找对应的驱动,通过次设备号对应到具体物理设备。注:1个驱动对应一类设备,并用唯一主设备号标识。
Linux支持的各种设备的主设备号定义在include/linux/major.h文件中,已经在官方注册的主设备号和次设备号在Documentation/devices.txt文件中。
Android系统最底层是Linux,并且在中间加上了一个Dalvik / ART的Java虚拟机,从表面层看是Android运行库。每个Android应用都运行在自己的进程上,享有Dalvik / ART虚拟机为它分配的专有实例,并支持多个虚拟机在同一设备上高效运行,虚拟机执行的是专有格式的可执行文件(.dex) - 该格式经过优化,以将内存好用降到最低。
Android内核和Linux内核的差别主要体现在如下11个方面:
D. Android真机调试连接服务器时出现问题怎么解决
方法如下:
1、较新版本的Android系统默认在设置是不显示开发人员选项的,因此进入设置->关于手机->多次点击版本号(一定次数之后设置中出现开发人员选项),开发人员选择出现之后就无需再设置了。
2、设置->开发人员选项(开启)->选择USB调试,之后一般会出现允许连接调试和安装调试证书的选项,都选择是。大部分情况下到这个时候Eclipse开发环境就能够识别手机并可以进行软件的编译下载安装与调试。
3、USB连接方式需要选择正确,如下图四个选项中,只有选中PC助手方式,才可以被电脑和开发环境识别。
6、还有Eclipse开发环境通过adb连接调试Android设备,有一些刷机软件也会运行adb程序,造成与开发环境的adb调试器冲突,需要关闭刷机软件,杀死所有adb进程重启开发环境。
E. 如何用adb连接android手机
(1)首先先用usb线连接android手机,然后输入指令:adb tcpip,端口号默认为5555。
(5)androidsocketusb扩展阅读
adb是androidsdk里的一个工具, 用这个工具可以直接操作管理android模拟器或者真实的andriod设备(如G1手机). 它的主要功能有:
1、运行设备的shell(命令行)。
2、管理模拟器或设备的端口映射。
3、计算机和设备之间上传/下载文件。
3、将本地apk软件安装至模拟器或android设备
ADB是一个客户端-服务器端 程序, 其中客户端是你用来操作的电脑, 服务器端是android设备。而ADB驱动就是电脑与android设备的通信的客户端驱动程序。
F. 【Android】如何使用ADB进行调试
1、adb devices
( 用于查看当前adb连接的设备有哪些,这里目前是无)
(6)androidsocketusb扩展阅读:
无线使用ADB(Android Debug Bridge)非常的实用,它能够让你的手机用无线来取代USB连接,与电脑链接起来更加的方便快捷,还可以保护电池。需要root。
还可以进行以下的操作:
1、快速更新设备或手机模拟器中的代码,如应用或Android系统升级;
2、在设备上运行shell命令;
3、管理设备或手机模拟器上的预定端口;
4、在设备或手机模拟器上复制或粘贴文件;
老玩家对adb这个调试工具肯定不陌生了,不过一般都是用USB连接来玩儿,这次带来的是用无线进行连接,就太强大了,毕竟usb连接对电池的寿命有一定影响。
G. 我怎样才能连接与亚行至Android通过TCP
手动处理 从您的设备,如果它是植根 根据对XDA开发后,您可以启用adb通过WiFi从装置su
setprop service.adb.tcp.port 5555
stop adbd
start adbd
并且您可以禁用它,并返回亚行与监听USBsetprop service.adb.tcp.port -1
stop adbd
start adbd
从电脑,如果你有USB连接已经 这是更容易切换无线网络,如果你已经有了USB访问。从该行已在设备通过USB接口,连接问题adb tcpip 5555
adb connect 192.168.0.101:5555
一定要更换192.168.0.101与实际分配给您的设备的IP地址。 告诉亚行后台程序返回到监听通过USBadb usb
应用自动化进程 也有在谷歌播放的自动执行此过程的几个应用程序 CodeGo.net,快速搜索建议adbWireless,支持WiFiadb和adb的WiFi。所有这些都需要root权限,但adbWireless需要更少的权限。
2. 这是非常简单的。 首先确保你的手机是植根。 从市场上下载一个终端仿真器(有很多是free的)。 请确保您的Android连接到您的无线网络,并获得无线IP地址。 打开终端程序并键入:su
setprop service.adb.tcp.port 5555
stop adbd
start adbd
现在去(假设你视窗)在桌面上创建一个快捷方式为“cmd.exe的”(不含引号)。 右键单击CMD快捷方式并选择"Run as Administrator"改变你的android-sdk-windows\tools folder类型:adb connect ***wifi.ip.address***:5555
(example: adb connect 192.168.0.105:5555)
亚行现在应该说你已连接。 注意:如果你太快给它可能会失败。所以,如果你说这是行不通的尝试至少2 5秒钟的时间间隔。
3. 我知道这是旧的,但我想补充我的2美分- 我需要得到两个USB和TCPIP工作的adb(不要问),所以我做了以下(使用方向其他人张贴的XDA开发) 运用adb shell:su
#set the port number for adbd
setprop service.adb.tcp.port 5555
#run the adbd daemon *again* instead of doing stop/start, so there
#are 2 instances of adbd running.
adbd &
#set the port back to USB, so the next time adb is started it's
#on USB again.
setprop service.adb.tcp.port -1
exit
4. 正如布赖恩说: 根据对XDA开发后,您可以启用adb通过WiFi从装置 对应setProp service.adb.tcp.port 5555 停止adbd 启动adbd 并且您可以禁用它,并返回亚行与监听USB 对应setProp service.adb.tcp.port-1 停止adbd 启动adbd 如果你有USB连接已经,它是更容易切换无线网络。从该行已在设备通过USB接口,连接问题 亚行TCPIP 5555 ADB连接192.168.0.101:5555 告诉亚行后台程序返回到监听通过USB 也有在Android Market上的几个应用程序能自动完成这些过程。 它works.You只需要访问Android shell,然后输入 另外一个(容易)解决方案是目前市场上:adbWireless,它会自动设置您的手机。 根是必须的!为...
5. 从adb --helpconnect <host>:<port> - connect to a device via TCP/IP
顺便说那行选项。 你应该尝试将手机连接到你的无线网络,然后得到它的IP从您的路由器,它不会工作,对 端口是5554
6. 您保存的adb路径到您的Windows路径 在Android激活调试模式 连接到PC 提示(有管理员右)类型:adb的TCPIP 5555 断开平板电脑,或从电脑智能手机 提示符下键入:ADB连接IPADDRESS(IP地址为您的平板电脑或智能手机的DHCP / IP地址,您可以通过无线网络找到->电流 现在,提示你应该看到类似的结果:连接到xxx.xxx.xxx.xxx:5555
7.adb tcpip 5555
奇怪,但是这只是工作,如果我有USB电缆连接,然后我就可以拔掉,并为它去与一切ADB。 而返回时,adb usb
只会工作连接。 没关系,如果我发出setprop service.adb.tcp.port 5555
或setprop service.adb.tcp.port -1
然后停止和启动adbd,我仍然需要电缆或这是行不通的。 所以,如果我的亚行不工作,我敢打赌,我将无法使亚行通过WiFi两种。
8. 你可以ssh本地端口转发。但它仍然涉及电缆。 您的USB连接(主机)与一个sshd运行。 在远程(游客)个人电脑开始能够portforwarding /隧道的ssh客户端端。 例如:砰砰-L 5037:本地主机:5037 这种结构给我的设备连接到虚拟机。 到是不够稳定(在调试过程中) SSH隧道工程为自由和更可靠。
9. 我不知道如何连接的设备,而在所有的任何一个USB连接,但如果你能,也许在您连接它可以通过发出切换adbd到TCP模式adb tcpip <port>
从终端,从任何PC上通过连接到您的设备通过WiFi:adb connect <ip>:<port>
也许也有可能从该装置上的终端切换到TCP模式。
10. 我觉得其他的答案就简单得多了adbWireless: 只需在手机上安装一个应用程序切换调试通过wifi,安装一个Eclipse插件,你就大功告成了。
11. 要连接您的TCP端口 请确保您的系统和设备连接到网络 1。打开控制台的cmd.exe 2,型号ADB TCPIP 5555 3。至系统->选项-> USB调试unchek它TCPIP连接 4.type ADB连接192.168.1.2这是您的设备ip地址 5。连接到192.168.1.2 如果你错误:未找到设备 连接设备到系统然后按照 为扎根设备 对应setProp service.adb.tcp.port 5555 停止adbd 启动adbd
12. 在我的系统是这样的: 我在我的Linux shell中的Android设备,一个简单的“使用ifconfig”没有我的IP地址。我只好类型: 用ifconfig eth0 -或- 加上netcfg 让我的IP地址。 (我知道是eth0的配置,我看到它在我的dmesg)然后我做了: 对应setProp service.adb.tcp.port-1 停止adbd 启动adbd 然后在我的Win7盒(一个运行Eclipse 3.7.1)。我打开提示 \\ Android的SDK \\平台工具> 没有以管理员身份运行。然后我做了一个 ADB连接12.345.678.90 我从来没有把一个端口。如果我做了 亚行TCPIP 5555 它说,它无法找到该设备,然后没有出现在我的“亚行的设备”列表中。即这只是工作,如果我不这样做上面。 我可以做一个“亚壳”与我的Android设备。但我的Android设备不现在出现在我的运行->运行配置-> Target选项卡。在另一方面,如果我把目标选项卡设置为自动。后来,当我通过运行我的应用程序运行->运行它并运行我的Android设备上,即使我的Android设备甚至没有列为我的目标之一。
13. 要使用TCP和USB模式之间切换只需你可以将它添加到/init.rc:on property:service.adb.tcp.port=*
restart adbd
on property:service.adb.tcp.enable=1
setprop service.adb.tcp.port 5555
on property:service.adb.tcp.enable=0
setprop service.adb.tcp.port -1
现在你财产service.adb.tcp.enable启用或禁用侦听端口5555。运行netstat以检查它是否在听。正如你可以看到它也会触发,如果你想改变service.adb.tcp.port手动。
14. 使用adbwireless应用程序,使手机,亚行从Windows机器连接到它对话。在手机上的应用程序adbwireless告诉你如何连接到它,给人的IP地址和一切。 要少得多有趣的选择是通过USB进行连接,告诉亚行通过TCPIP 5555手机TCPIP,然后断开USB,ADB连接。这是更难通过这种方式,你必须找出手机的IP地址,你自己(adbwireless告诉你的IP),你必须通过USB进行连接,你必须运行adb的TCPIP(adbwireless需要的是照顾过)。 所以:在手机上安装adbwireless。使用它。这是可能的,我这样做经常在Linux和Windows上。
15. 我放在一起自动启用和通过TCP连接adb,通过USB连接的设备的批处理文件。有了它,你不必把在IP手动。@echo off
setlocal
REM Use a default env variable to find adb if possible
if NOT "%AndroidSDK%" == "" set PATH=%PATH%;%AndroidSDK%\platform-tools
REM If off is first parameter then we turn off the tcp connection.
if "%1%" == "off" goto off
REM Set vars
set port=%1
set int=%2
if "%port%" == "" set port=5557
if "%int%" == "" set int=wlan0
REM Enable TCP
adb -d wait-for-device tcpip %port%
REM Get IP Address from device
set shellCmd="ip addr show %int% | grep 'inet [0-9]{1,3}(\.[0-9]{1,3}){3}' -oE | grep '[0-9]{1,3}(\.[0-9]{1,3}){3}' -oE"
for /f %%i in ('adb wait-for-device shell %shellCmd%') do set IP=%%i
REM Connect ADB to device
adb connect %IP%:%port%
goto end
:fail
echo adbWifi [port] [interface]
echo adbWifi off
goto end
:off
adb wait-for-device usb