Android开发 adb命令简介

来源:互联网 发布:淘宝客关闭返利 编辑:程序博客网 时间:2024/05/18 03:33

Android开发 adb命令简介

     adb全称为Android Debug Bridge,安卓调试桥,IDE通过它连接操作手机。在命令行中我们可以使用它进行很多强大而灵活的操作。比如获取手机中安装卸载软件,启动某个Activity,模拟触摸点击等。

     adb的采用典型的C/S架构,一手机为服务器,电脑为客户端,通过端口传递信息。(C/S架构确实就是一个广泛而经典的东西)。它的软件构成分三个部分,运行于Android设备的服务端,电脑上的客户端程序(相当如CMD命令行吧),以及电脑端的发送接收命令后台进程(任务管理器中的adb.exe进程),相当于Android服务端的代理吧。然后主要要用到的就是adb下的各种命令。

     首先装好adb相关的软件,然后将adb.exe所在目录放到系统环境变量中,再在cmd中输入adb看能否在输出相关命令信息代表设置成功。adb的命令主要分三个部分,adb本身的命令,Android的shell命令,以及linux的命令。

     一、adb的命令

     1、启动或杀死服务代理进程,即adb.exe,在连接手机或模拟器异常时尝试此命令解决问题。

adb kill/start-server 注意没有空格

     3、通过wifi连接手机

     adb connect ip 需要在同一个局域网中,并进行一些配置,具体可搜索网上资料

     4、查看连接的设备列表,adb可同时控制多台设备

     adb devices

     5、安装或卸载apk,安装卸载有好多的方式,比如通过shell命令卸载,通过push文件方式安装

     adb install 电脑上apk路径

     adb uninstall 报名

     6、互传文件

     adb push 电脑路径 设备路径     将文件传递到设备

     adb pull 手机路径 电脑路径   从手机中获取文件

     7、重启设备

     adb reboot [bootloader|recovery]  []内为可选参数,进入引导界面,或者刷机,需要一定权限

     8、进入shell命令下,进入之后可直接输入shell命令,如果不进入就的每次在前面加上adb shell

     adb shell 

     9、log相关的命令

      logcat 输出所有的log,会一直输出停不下来的,它不仅输出当前的,还输出以前的

      adb logcat > c:\test.log //将日志保存到文件test.log

     9.1、adb logcat *:X过滤日志输出

       每一条日志消息都有一个标记和优先级与其关联。

       标记是一个简短的字符串,用于标识原始消息的来源 (例如"View" 来源于显示系统)。
       优先级是下面的字符,顺序是从低到高:
              V — 明细 (最低优先级)
              D — 调试
              I — 信息
              W — 警告
              E — 错误
              F — 严重错误
              S — 无记载 (最高优先级,没有什么会被记载

       9.2、日志消息在标记和优先级之外还有很多元数据字段,这些字段可以通过修改输出格式来控制输出结果, -v 选项加上下面列出的内容可以控制输出字段:
              brief — 显示优先级/标记和原始进程的PID (默认格式)
              process — 仅显示进程PID
              tag — 仅显示优先级/标记
              thread — 仅显示进程:线程和优先级/标记
              raw — 显示原始的日志信息,没有其他的元数据字段
              time — 显示日期,调用时间,优先级/标记,PID
              long —显示所有的元数据字段并且用空行分隔消息内容

        9.3、Android日志系统为日志消息保持了多个循环缓冲区,而且不是所有的消息都被发送到默认缓冲区,要想查看这些附加的缓冲区,可以使用-b 选项,以下是可以指定的缓冲区:
              radio — 查看包含在无线/电话相关的缓冲区消息
              events — 查看事件相关的消息
              main — 查看主缓冲区 (默认缓冲区)

     10、端口转发,比较高级的功能了。将电脑发到a端口的数据转发到设备b端口中

     adb forword tcp:6000 tcp:7000


     二、shell命令

     android的shell命令文件放在/system/bin下面,分为不同的类

     1、pm相关,即package manager 

      pm package [-s|-3] [-f] [-i] [过滤字符]

      []类为一组,一组的不能同时出现吗,意义如下 -s系统应用,-3 三方应用,-f显示应用路径,-i显示应用安装来源 过滤字符任意,过滤包名称

      pm instrumentation 列出所有含有单元测试的应用

      pm dump 包名 显示包名应用的相关信息 

      pm install 安装存在与手机sd卡中的应用

      2、am相关

      am start -n 应用包名/activity绝对路径名或.相对应用包路的径名 启动activity -n表示直接启动,还有-s表示停止当前已经启动的在启动。

      am start -a action字符串 [-d data 字符串] 用匹配的方式启动,其中action字符串可以使android.action.VIEW等等。

      am startservice 启动服务 

      am broadcast发送广播

      am force-stop 包名 强制停止包相关的应用

      am monitor 启动anr和crash的监听器

      3.input相关

      用它模拟各种输入件,如触摸键盘灯

      input text xxxx 模拟输入文本 输入法打开时就会获取到该段文本

      input keyevent KEYCODE_XXX 模拟某种键盘时间 xxx可以是HOME、BACK、MENU、A、B、、、,它们都有对应的数字,直接输入对应的数字也行

      input tap x y 模拟触摸事件 位置x y

      input swip x y x1 y1 x2 y2 模拟滑动

      利用这些就可以写自动测试的脚本,十分强大。

      4、dumpsys 待探究

      5、操作sqlite数据库 待探究

      三、linux相关命令

      这个有很多,具体可查询网上的了。

      这里复制了一下别的博客的 :http://www.cnblogs.com/laov/p/3541414.html

常用指令

ls、mkdir、cp、mv、rm、ps、ping、grep等

ls          显示文件或目录

     -l           列出文件详细信息l(list)

     -a          列出当前目录下所有文件及目录,包括隐藏的a(all)

mkdir         创建目录

     -p           创建目录,若无父目录,则创建p(parent)

cd               切换目录

touch          创建空文件

echo            创建带有内容的文件。

cat              查看文件内容

cp                拷贝

mv               移动或重命名

rm               删除文件

     -r            递归删除,可删除子目录及文件

     -f            强制删除

find              在文件系统中搜索某文件

wc                统计文本中行数、字数、字符数

grep             在文本文件中查找某个字符串

rmdir           删除空目录

tree             树形结构显示目录,需要安装tree包

pwd              显示当前目录

ln                  创建链接文件

more、less  分页显示文本文件内容

head、tail    显示文件头、尾内容

ctrl+alt+F1  命令行全屏模式

 

系统管理命令

stat              显示指定文件的详细信息,比ls更详细

who               显示在线登陆用户

whoami          显示当前操作用户

hostname      显示主机名

uname           显示系统信息

top                动态显示当前耗费资源最多进程信息

ps                  显示瞬间进程状态 ps -aux

du                  查看目录大小 du -h /home带有单位显示目录信息

df                  查看磁盘大小 df -h 带有单位显示磁盘信息

ifconfig          查看网络情况

ping                测试网络连通

netstat          显示网络状态信息

man                命令不会用了,找男人  如:man ls

clear              清屏

alias               对命令重命名 如:alias showmeit="ps -aux" ,另外解除使用unaliax showmeit

kill                 杀死进程,可以先用ps 或 top命令查看进程的id,然后再用kill命令杀死进程。

 

打包压缩相关命令

gzip:

bzip2:

tar:                打包压缩

     -c              归档文件

     -x              压缩文件

     -z              gzip压缩文件

     -j              bzip2压缩文件

     -v              显示压缩或解压缩过程 v(view)

     -f              使用档名

例:

tar -cvf /home/abc.tar /home/abc              只打包,不压缩

tar -zcvf /home/abc.tar.gz /home/abc        打包,并用gzip压缩

tar -jcvf /home/abc.tar.bz2 /home/abc      打包,并用bzip2压缩

当然,如果想解压缩,就直接替换上面的命令  tar -cvf  / tar -zcvf  / tar -jcvf 中的“c” 换成“x” 就可以了。

 

关机/重启机器

shutdown

     -r             关机重启

     -h             关机不重启

     now          立刻关机

halt               关机

reboot          重启

 

Linux管道

将一个命令的标准输出作为另一个命令的标准输入。也就是把几个命令组合起来使用,后一个命令除以前一个命令的结果。

例:grep -r "close" /home/* | more       在home目录下所有文件中查找,包括close的文件,并分页输出。

 

Linux软件包管理

dpkg (Debian Package)管理工具,软件包名以.deb后缀。这种方法适合系统不能联网的情况下。

比如安装tree命令的安装包,先将tree.deb传到Linux系统中。再使用如下命令安装。

sudo dpkg -i tree_1.5.3-1_i386.deb         安装软件

sudo dpkg -r tree                                     卸载软件

 

注:将tree.deb传到Linux系统中,有多种方式。VMwareTool,使用挂载方式;使用winSCP工具等;

APT(Advanced Packaging Tool)高级软件工具。这种方法适合系统能够连接互联网的情况。

依然以tree为例

sudo apt-get install tree                         安装tree

sudo apt-get remove tree                       卸载tree

sudo apt-get update                                 更新软件

sudo apt-get upgrade        

 

将.rpm文件转为.deb文件

.rpm为RedHat使用的软件格式。在Ubuntu下不能直接使用,所以需要转换一下。

sudo alien abc.rpm

 

vim使用

vim三种模式:命令模式、插入模式、编辑模式。使用ESC或i或:来切换模式。

命令模式下:

:q                      退出

:q!                     强制退出

:wq                   保存并退出

:set number     显示行号

:set nonumber  隐藏行号

/apache            在文档中查找apache 按n跳到下一个,shift+n上一个

yyp                   复制光标所在行,并粘贴

h(左移一个字符←)、j(下一行↓)、k(上一行↑)、l(右移一个字符→)

 

用户及用户组管理

/etc/passwd    存储用户账号

/etc/group       存储组账号

/etc/shadow    存储用户账号的密码

/etc/gshadow  存储用户组账号的密码

useradd 用户名

userdel 用户名

adduser 用户名

groupadd 组名

groupdel 组名

passwd root     给root设置密码

su root

su - root 

/etc/profile     系统环境变量

bash_profile     用户环境变量

.bashrc              用户环境变量

su user              切换用户,加载配置文件.bashrc

su - user            切换用户,加载配置文件/etc/profile ,加载bash_profile

更改文件的用户及用户组

sudo chown [-R] owner[:group] {File|Directory}

例如:还以jdk-7u21-linux-i586.tar.gz为例。属于用户hadoop,组hadoop

要想切换此文件所属的用户及组。可以使用命令。

sudo chown root:root jdk-7u21-linux-i586.tar.gz

 

文件权限管理

三种基本权限

R           读         数值表示为4

W          写         数值表示为2

X           可执行  数值表示为1

如图所示,jdk-7u21-linux-i586.tar.gz文件的权限为-rw-rw-r--

-rw-rw-r--一共十个字符,分成四段。

第一个字符“-”表示普通文件;这个位置还可能会出现“l”链接;“d”表示目录

第二三四个字符“rw-”表示当前所属用户的权限。   所以用数值表示为4+2=6

第五六七个字符“rw-”表示当前所属组的权限。      所以用数值表示为4+2=6

第八九十个字符“r--”表示其他用户权限。              所以用数值表示为2

所以操作此文件的权限用数值表示为662 

更改权限

sudo chmod [u所属用户  g所属组  o其他用户  a所有用户]  [+增加权限  -减少权限]  [r  w  x]   目录名 

例如:有一个文件filename,权限为“-rw-r----x” ,将权限值改为"-rwxrw-r-x",用数值表示为765

sudo chmod u+x g+w o+r  filename

上面的例子可以用数值表示

sudo chmod 765 filename

            

                  


0 0