adb的全称为Android Debug Bridge,就是起到调试桥的作用。adb的工作方式比较特殊,采用监听Socket TCP 5554等端口的方式让IDE和Qemu通讯,默认情况下adb会daemon相关的网络端口,借助adb工具,我们可以管理设备或手机模拟器的状态。还可以进行很多手机操作,如安装软件、系统升级、运行shell命令等等。其实简而言说,adb就是连接Android手机与PC端的桥梁,可以让用户在电脑上对手机进行全面的操作。

adb下载地址:

http://files.cnblogs.com/files/dcb3688/adb.7z

adb命令:

Category Command Description Comments
Options -d 仅仅通过USB接口来管理abd. 如果不只是用USB接口来管理则返回错误.
-e 仅仅通过模拟器实例来管理adb. 如果不是仅仅通过模拟器实例管理则返回错误.
-s<serialNumber> 通过模拟器/设备的允许的命令号码来发送命令来管理adb (比如: "emulator-5556"). 如果没有指定号码,则会报错.
General devices 查看所有连接模拟器/设备的设施的清单. 查看Querying for Emulator/Device Instances获取更多相关信息.
help 查看adb所支持的所有命令。.
version 查看adb的版本序列号.
Debug logcat[<option>] [<filter-specs>] 将日志数据输出到屏幕上.
bugreport 查看bug的报告,如dumpsys,dumpstate,和logcat信息。
jdwp 查看指定的设施的可用的JDWP信息. 可以用forward jdwp:<pid>端口映射信息来连接指定的JDWP进程.例如:
adb forward tcp:8000 jdwp:472
jdb -attach localhost:8000
Data install<path-to-apk> 安装Android为(可以模拟器/设施的数据文件.apk指定完整的路径).
pull<remote><local> 将指定的文件从模拟器/设施的拷贝到电脑上.
push<local><remote> 将指定的文件从电脑上拷贝到模拟器/设备中.
Ports and Networking forward<local><remote> 用本地指定的端口通过socket方法远程连接模拟器/设施 端口需要描述下列信息:
  • tcp:<portnum>
  • local:<UNIX domain socket name>
  • dev:<character device name>
  • jdwp:<pid>
ppp<tty>[parm]... 通过USB运行ppp:
  • <tty>— the tty for PPP stream. For exampledev:/dev/omap_csmi_ttyl.
  • [parm]...&mdash zero or more PPP/PPPD options, such asdefaultroute,local,notty, etc.

需要提醒你的不能自动启动PDP连接.

Scripting get-serialno 查看adb实例的序列号. 查看Querying for Emulator/Device Instances可以获得更多信息.
get-state 查看模拟器/设施的当前状态.
wait-for-device 如果设备不联机就不让执行,--也就是实例状态是device时. 你可以提前把命令转载在adb的命令器中,在命令器中的命令在模拟器/设备连接之前是不会执行其它命令的. 示例如下:
adb wait-for-device shell getprop
需要提醒的是这些命令在所有的系统启动启动起来之前是不会启动adb的 所以在所有的系统启动起来之前你也不能执行其它的命令. 比如:运用install的时候就需要Android包,这些包只有系统完全启动。例如:
adb wait-for-device install <app>.apk
上面的命令只有连接上了模拟器/设备连接上了adb服务才会被执行,而在Android系统完全启动前执行就会有错误发生.
Server start-server 选择服务是否启动adb服务进程.
kill-server 终止adb服务进程.
Shell shell 通过远程shell命令来控制模拟器/设备实例. 查看获取更多信息for more information.
shell[<shellCommand>] 连接模拟器/设施执行shell命令,执行完毕后退出远程shell端l.

通过adb shell screencap -p 获取手机屏幕

代码如下:

# -*- coding: UTF8 -*-from PyQt4.QtGui import *import sys, os, timefrom PyQt4.QtCore import *class myadb(QDialog):    def __init__(self):        super(myadb, self).__init__()        self.Xsize = 480        self.Ysize = 850        self.resize(self.Xsize, self.Ysize)        self.setWindowFlags(Qt.Dialog | Qt.CustomizeWindowHint)        self.Theading = MyTheading()        self.connect(self.Theading, SIGNAL("updatescreen"), self.update)        self.Theading.start()  # 线程开始    def paintEvent(self, event):        painter = QPainter()        painter.begin(self)        painter.setRenderHint(QPainter.Antialiasing)        painter.drawPixmap(0, 0, self.Xsize, self.Ysize, QPixmap("C:\\screen.png"))        painter.end()class MyTheading(QThread):    def __init__(self):        super(MyTheading, self).__init__()    def run(self):        while True:            command = 'adb shell screencap -p /sdcard/screen.png '            os.system(command)            cmdpic = "adb pull  /sdcard/screen.png  C:\\screen.png "            os.system(cmdpic)            self.emit(SIGNAL("updatescreen"))if __name__ == '__main__':    app = QApplication(sys.argv)    appadb = myadb()    appadb.show()    app.exit(appadb.exec_())

运行报错:

adb server is out of date.  killing....

原因在于ADB server没有成功启动,其端口被占用

首先查找对应端口:

adb nodaemon server
cannot bind 'tcp:5037'
继续查找此端口具体被哪个进程所占用了
netstat -ano | findstr "5037"

找到后将相应进程kill掉,(我的电脑是tadb.exe 占用)然后在执行脚本

效果:

更多相关文章

  1. Android开发之Tools使用
  2. Android开发需要掌握的10个工具
  3. Android交互式视觉设计简介
  4. android和OPhone模拟器界面对比
  5. Android(安卓)init 详细过程分析
  6. Android自动化工具Monkeyrunner使用(一)
  7. 关于Android下的JNI编程、SO库以及NDK的一些问题
  8. ubuntu用wifi连接android调试程序的步骤
  9. android 模拟器创建的sdcard 没有mount

随机推荐

  1. mysql批量更新多条记录的同一个字段为不
  2. 远程连接mysql错误代码1130的解决方法
  3. Windows下MySQL 5.7无法启动的解决方法
  4. Mysql 行级锁的使用及死锁的预防方案
  5. mysql 5.7.17 安装配置方法图文教程(Cent
  6. SQL Server COALESCE函数详解及实例
  7. windows 10 下安装mysql 5.7.17的简单笔
  8. 详解windows下mysql的主从同步
  9. Mybatis报错: org.apache.ibatis.excepti
  10. SQL Server 数据库的备份详细介绍及注意