您的位置:首页 > 运维架构 > Linux

linux配置android真机调试的步骤

2015-05-12 12:19 477 查看
首先按照 SDK 上的说明建立 udev 的 rules 文件,然后:

在 Ubuntu 11.04 下通过usb连接 Android设备,使用 adb 时,会返回无法找到设备,解决办法如下:

在终端运行 lsusb

会发现结果有会有如下类似记录:

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

注意最后一个

Bus 001 Device 003: ID 12d1:360e Huawei Technologies Co., Ltd.

这时键入,新建一个50-Android.rules文件,如下所示:

sudo vim /etc/udev/rules.d/50-Android.rules

在打开的文件中增加以下文本:

SUBSYSTEM==”usb”, SYSFS{“High Tech Computer Corp.”}==”12d1”, MODE=”0666”

运行以下命令:

sudo chmod a+rx /etc/udev/rules.d/50-Android.rules

让设备管理器重启

sudo /etc/init.d/udev restart

udev 是Linux kernel 2.6系列的设备管理器。它主要的功能是管理/dev目录底下的设备节点。它同时也是用来接替devfs及hotplug的功能,这意味着它要在添加/删除硬件时处理/dev目录以及所有用户空间的行为,包括加载firmware时。udev的最新版本依赖于升级后的Linux kernel 2.6.13的uevent接口的最新版本。使用新版本udev的系统不能在2.6.13以下版本启动,除非使用noudev参数来禁用udev并使用传统的/dev来进行设备读取。

在 Android sdk 的 platform-tools 目录下运行 (这一步很重要,必须要sudo,否则没效果,在之后的sdk都将adb放在了platform-tools中)

sudo ./adb kill-server

sudo ./adb devices

然后,就可以直接用 adb 来进行操作了。

若继续在Ubuntu 11.04 下执行adb devices命令, 返回的结果是:

List of devices attached

???????????? no permissions

这意味着,USB连接的设备是能够被识别的。经过上网查找之后,得知adb server需要以root的权限启动,于是有了如下命令:

www.linuxidc.com@linuxidc-laptop:~/Dev/Java/Android/android-sdk-linux_86/tools$ ./adb kill-server

www.linuxidc.com@linuxidc-laptop:~/Dev/Java/Android/android-sdk-linux_86/tools$ sudo ./adb start-server

* daemon not running. starting it now *

* daemon started successfully *

第一条命令用来杀死当前正在运行的server, 第二条命令则以root的权限启动了新的server. 我们可以再次查看devices:

www.linuxidc.com@linuxidc-laptop:~/Dev/Java/Android/android-sdk-linux_86/tools$ ./adb devices

List of devices attached

HT848KV04386 device

这次设备就被正确识别了。自然地, 像ddms之类的工具也能派上用场了。

[b]_____________________________________________________________[/b]以下说明配置完毕后开始调试的步骤

注:如果没有 root 权限也是可以试试,一般情况下,都需要 root 权限,才能连接成功。

1.需要确保你的开发 PC 和 Android 手机都连上了 wifi 并处于同一网段下;

2.开启 usb 调试,且用 usb 将 Android 设备连接到开发 PC 上;

3.进入到你的 Android SDK 的 platform-tools 目录下,

执行如下命令来重启 Android 设备中的 adbd 后台程序重新侦听 TCP 的指定端口:

$./adb tcpip 5555

注:5555 是默认端口,换成别的也没有必要,且这里一定要设一个端口的!

4.执行如下命令来建立 wifi 调试连接:

$./adb connect Android设备实际的IP地址[:通过 ./adb tcpip 指定的端口号]

注:IP 地址和端口号之间有一个冒号,如果端口号为 5555 的话,则可以省略。

如果出现 “unable to connect to IP 地址:端口号” 此类错误信息,则:

1)进入 Android 设备终端中:

$./adb shell

2)切换为 Android 设备的 root 用户:

$ su -

3)设置 adbd 服务的指定端口号:

# setprop service.adb.tcp.port 5555

注:5555 虽是默认的,这里也要设一下,也可以是自定义的,但是什么必要。

4)设置 adbd 服务后,重新运行它:

# start adbd

注:# stop adbd 命令将会停止 adbd ,只能重启了 Android 设备了。

5)再重启 Android 设备中的 adbd 后台程序重新侦听 TCP 的指定端口:

$ ./adb tcpip 5555

6)再建立 wifi 调试连接:

$ ./adb connect IP地址[:端口号]

7)出现如下字样,表示成功:

connected to IP地址[:端口号]

8)进入 Android 设备终端中:

$./adb shell

9)执行 netstat 命令,则可以看到 IP地址:端口号 已建立的状态:

Proto Recv-Q Send-Q Local Address Foreign Address State

tcp 0 0 0.0.0.0:5555 0.0.0.0:* LISTEN

tcp 0 0 0.0.0.0:11000 0.0.0.0:* LISTEN

tcp 26 0 192.168.1.104:5555 192.168.1.102:40821 ESTABLISHED

---------------------------------------------

Proto Recv-Q Send-Q Local Address Foreign Address State

tcp 0 0 0.0.0.0:11000 0.0.0.0:* LISTEN

注:分隔线(—)上面的是建立好的状态显示,下面的是没有建立好的状态显示。

9)执行查看设备命令的结果,也与 usb 的不同:

$ ./adb devices

List of devices attached

192.168.1.104:5555 device

--------------------------

List of devices attached

android123456 device

注:分隔线(—)上面的是 TCP 连接,下面的是 usb 连接。

*.执行如下命令来重启 Android 设备中的 adbd 后台程序重新侦听 usb :

./adbusb注:执行此命令后,再用./adbdevices查看设备就查不到了,  执行./adb usb
注:执行此命令后,再用 ./adb devices 查看设备就查不到了,
  执行 sudo ./adb kill-server 和 sudo./adbstart−server也不行,  只能重启Android设备了!    所以,正确的做法是:  1)进入Android设备终端中: sudo ./adb start-server 也不行,
  只能重启 Android 设备了!
  
  所以,正确的做法是:
  1)进入 Android 设备终端中:
  ./adb shell

  2)切换为 Android 设备的 root 用户:

  $ su -

  3)设置 adbd 服务的指定端口号:

  # setprop service.adb.tcp.port -1

  注:关闭 wifi 调试,只需在此将端口号设为负壹(-1)即可。

  4)以上三步做完后,即可执行 ./adb usb 切回 usb 连接调试方式。

  *注:如果只是断开一下连接,只需运行如下命令:

     $./adb disconnect
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: